<TYPE> *<pointer name>;Here <TYPE> can be a predefined type such as int, float, or a user-defined class. Example:
int *p; CAT *t;
Defining references:
<TYPE> &<reference> = <variable name>;Here <TYPE> can be as above. <variable name> is a defined variable of the same type. Example:
int &magn = fjoldi;Now magn is another name of the variable fjoldi. You can use both name equally.
There are two operators that are connected to pointers. To get what the pointers point to, you use the operator "*". Example:
float *p; // p is a pointer to float p = new float; // p is made to point to an unnamed float-location *p = 2.5; // what p points to (i.e. the unnamed location) is given // the value 2.5You can get the address of all variables with the operator "&". All variables are stored in memory and thus have addresses. We can put these addresses into pointer variables:
int i; // i is an int variable int *p = &i; // p is an int pointer and is made to point to i // i.e. the address of i is put into pNote that pointers are variables also and thus have addresses like other variables. We can define "pointers to pointers to int". These are pointers that only point to "pointers to int" (or int *). Example:
int i; int *p = &i; int **q = &p; // q is a pointer to int-pointers and is made to point to p i = 5; // *p = 5; // These three statements are all equivalent **q = 5; //Note that because references are just another names of a variable then both the names have the same address. Example:
int fjoldi; int &magn = fjoldi; // magn is another name for fjoldi int *p; p = &fjoldi; // p = &magn; // There two statements are completely equivalentYou can try to type in the example above and then print out &fjoldi and &magn. You should get the same address.
*p = a; // what p points to is set as the value of a // a has to be the same type as the thing p points to, i.e. int // we also assume that p points to a memory location that we are allowed to change *p = &a; // what p points to is set to the address of a // since p is a pointer to int and &a is an address then this does not // work (i.e. an address goint into an integer location) p = &a; // p gets the address of a // then a must be an int variable, since p can only point to int-locations p = a; // p gets the value in a // then a must be an int pointer also (i.e. defined with "int *a;")