intThe pointer can point to different integers and the int’s can be changed through the pointer. This sample of code assigns b to point to int b then changes b’s value to 100.
int b;
int* p;
p = &b; /* OK */
*p = 100; /* OK */
const intThe pointer can point to different integers but the `int`'s value can't be changed through the pointer.
int b;
const int* p;
p = &b; /* OK */
*p = 100; /* Compiler Error */
const pointer to intThe pointer can only point to one int but the int’s value can be changed through the pointer.
int a, b;
int* const p = &b; /* OK as initialisation, no assignment */
*p = 100; /* OK */
p = &a; /* Compiler Error */
const pointer to const intThe pointer can only point to one int and the int can not be changed through the pointer.
int a, b;
const int* const p = &b; /* OK as initialisation, no assignment */
p = &a; /* Compiler Error */
*p = 100; /* Compiler Error */
intThis code assigns the address of p1 to the to double pointer p (which then points to int* p1 (which points to int)).
Then changes p1 to point to int a. Then changes the value of a to be 100.
void f1(void)
{
int a, b;
int *p1;
int **p;
p1 = &b; /* OK */
p = &p1; /* OK */
*p = &a; /* OK */
**p = 100; /* OK */
}
const intvoid f2(void)
{
int b;
const int *p1;
const int **p;
p = &p1; /* OK */
*p = &b; /* OK */
**p = 100; /* error: assignment of read-only location ‘**p’ */
}
const pointer to an int