Pointers

Pointers are pointers to memory, the variable that is defined as a pointer still holds the same area in memory as the type of the pointer e.g. char and int are of different size in memory, just do a

cout << sizeof(char) << sizeof(int);

to find out.

The actually pointer holds the address of the variable it is pointing to, e.g.

The value variable

Value = 10, address within the memory for value = 4

The pointer

ValuePointer = 4 (the address of the value), address within the memory = 200

The valuepointer actually equals 4, the memory of the value variable, if you use the * (pointer) then you will get the value pointed to, 10, and if you use the & (address) you will get 200 which is the place in memory where the valuepointer is placed in memory.

For example

int main()
{
int value1 = 10;
int *valp = &value1;       // equals the memory address of value1
 
std::cout << "Value 1 = " << value1 << " address = " << &value1 << "\n";
std::cout << "Value p = " << *valp << " address = " << &valp << " pointed to memory " << valp << "\n";
std::cout << "The value p pointerd to memory is the same as the memory address as value 1\n";
std::cout << "The value p = the pointerd memory value that is assoicated with the value that is in valp (address of memory)\n";
 
(*valp)++;              // correct increament the value that is pointed to by the address held by vapl
std::cout << "Value 1 = " << value1 << " address = " << &value1 << "\n";
std::cout << "Value p = " << *valp << " address = " << &valp << " pointed to memory " << valp << "\n";
 
*valp++;              // incorrect will increament the address that is held valp by sizeof(int) (usually 4)
std::cout << "Value 1 = " << value1 << " address = " << &value1 << "\n";
std::cout << "Value p = " << *valp << " address = " << &valp << " pointed to memory " << valp << "\n";
 
return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *