cplusplus:pointers_3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
cplusplus:pointers_3 [2014/04/28 23:46] – mithat | cplusplus:pointers_3 [2016/03/05 23:27] – [Pointers 3] mithat | ||
---|---|---|---|
Line 5: | Line 5: | ||
===== Pointers and arrays ===== | ===== Pointers and arrays ===== | ||
- | Arrays and pointers in C++ are very closely related. In C++ an array name is like a constant pointer: the block of memory where array name points cannot be changed, but what is stored there can change. | + | Arrays and pointers in C++ are very closely related. In C++ an array name is like a constant pointer: the block of memory where an array name points cannot be changed, but what is stored there can change. |
The relationship is so close that you can use pointer operators with array names: | The relationship is so close that you can use pointer operators with array names: | ||
Line 39: | Line 39: | ||
C++ lets you perform arithmetic on pointer variables; however, //pointer arithmetic works differently from normal arithmetic!// | C++ lets you perform arithmetic on pointer variables; however, //pointer arithmetic works differently from normal arithmetic!// | ||
- | In other words, adding 1 to a pointer makes it to point to the next block of memory corresponding to the size of the underlying type and subtracting 1 from a pointer makes to point to the previous block of memory corresponding to the size of the underlying type. This is really only meaningful when performed on an array. | + | In other words, adding 1 to a pointer makes it point to the next block of memory corresponding to the size of the underlying type; subtracting 1 from a pointer makes it point to the previous block of memory corresponding to the size of the underlying type. This is really only meaningful when performed on an array. |
<file cpp pointer-math.cpp> | <file cpp pointer-math.cpp> | ||
+ | /** Pointer arithmetic. */ | ||
#include < | #include < | ||
using namespace std; | using namespace std; | ||
Line 65: | Line 66: | ||
Subtracting one pointer from another returns the number of elements between two addresses: | Subtracting one pointer from another returns the number of elements between two addresses: | ||
- | <file cpp pointer-subtraction.cpp> | + | <file cpp subtracting-pointers.cpp> |
+ | /** Subtracting pointers */ | ||
#include < | #include < | ||
using namespace std; | using namespace std; | ||
Line 83: | Line 85: | ||
==== Walking down an array ==== | ==== Walking down an array ==== | ||
- | A common technique used to visit every element in an array is to //walking | + | A common technique used to visit every element in an array is to //walk down an array// with a pointer: |
<file cpp walk-down-array.cpp> | <file cpp walk-down-array.cpp> | ||
+ | /** Walking down an array. */ | ||
#include < | #include < | ||
using namespace std; | using namespace std; | ||
Line 94: | Line 97: | ||
int *vPtr = v; | int *vPtr = v; | ||
- | for(int i=0; i<5; i++) | + | for (int i = 0; i < 5; i++) |
{ | { | ||
cout << *vPtr << endl; | cout << *vPtr << endl; | ||
Line 107: | Line 110: | ||
<file cpp walk-null-terminated.cpp> | <file cpp walk-null-terminated.cpp> | ||
+ | /** Walking down a null-terminated array. */ | ||
#include < | #include < | ||
using namespace std; | using namespace std; | ||
Line 146: | Line 150: | ||
^ Operation | ^ Operation | ||
- | |< | + | |Increment |
- | |< | + | |Decrement |
- | |< | + | |Arithmetic |
- | |< | + | |Compound assignment |
valptr += 2; // points at 11</ | valptr += 2; // points at 11</ | ||
- | |< | + | |Pointer subtraction |
cplusplus/pointers_3.txt · Last modified: 2016/03/05 23:27 by mithat