Pointers

Variables are stored at specific locations in memory. A pointer is a special type of variable that instead of containing data, points to a location in memory where data is stored. The pointer contains the address where another variable (generally) is stored in memory.

The * character is used to denote a pointer. The following shows the declaration of an integer and a pointer to an integer:

   int a; //a regular integer
   int *p; //a pointer to an integer
The address of a variable can be determined by preceding the variable name with an & symbol. The value contained at an address that a pointer points to can be determined by preceding the name of the pointer with a * symbol. The following example should make this clear.
#include <stdio.h>

int main()
{
    int a; //an integer variable
    int *p; //a pointer to an integer

    //assign a value to a
    a = 6;

    //make p point to the location of a
    p = &a; //this reads "p = the address of a"

    //Display the value of a and the value of the location p points to
    //Notice that we use the *p to indicate the value p points at
    printf("The value of a is %d and the value p points at is %d\n", a, *p);
    
    //Since p points at the location where a is stored, if we change
    //the value p points at, we will also change a
    *p = 17;
    printf("The value of a is %d and the value p points at is %d\n", a, *p);

    return 0;
}

A pointer that does not point to anything should be set to NULL. For example:

    int *p;
    p = NULL;
NULL is used to indicate unassigned pointers.

next


 home                      table of contents                      about