What Are Pointers?
Pointers are basically the same as any other variable. However, what is different about them is that instead of containing actual data, they contain a pointer to the memory location where information can be found. This is a very important concept. Many programs and ideas rely on pointers as the basis of their design, linked lists for example.Getting Started
How do I define a pointer? Well, the same as any other variable, except you add an asterisk before its name. So, for example, the following code creates two pointers, both of which point to an integer:int* pNumberOne;
int* pNumberTwo;
Notice the "p" prefix in front of the two variable names? This is a
convention used to indicate that the variable is a pointer. Now, let's
make these pointers actually point to something:pNumberOne = &some_number;
pNumberTwo = &some_other_number;
The & (ampersand) sign should be read as "the address of" and
causes the address in memory of a variable to be returned, instead of
the variable itself. So, in this example, pNumberOne is set to equal the address of some_number, so pNumberOne now points to some_number.Now if we want to refer to the address of
some_number, we can use pNumberOne. If we want to refer to the value of some_number from pNumberOne, we would have to say *pNumberOne.
The * dereferences the pointer and should be read as "the memory
location pointed to by," unless in a declaration, as in the line int *pNumber. What We've Learned So Far: An Example
Phew! That's a lot to take in. I'd recommend that if you don't understand any of those concepts, to give it another read through. Pointers are a complex subject and it can take a while to master them. Here is an example that demonstrates the ideas discussed above. It is written in C, without the C++ extensions.#include <stdio.h>
void main()
{
// declare the variables:
int nNumber;
int *pPointer;
// now, give a value to them:
nNumber = 15;
pPointer = &nNumber;
// print out the value of nNumber:
printf("nNumber is equal to : %d\n", nNumber);
// now, alter nNumber through pPointer:
*pPointer = 25;
// prove that nNumber has changed as a result of the above by
// printing its value again:
printf("nNumber is equal to : %d\n", nNumber);
}