There are two type of const:
1. const int *p; <----- pointer 'p' is not const, while to what it points is const.
e.g.:
int i;
const int ci = 5;
const int *p;
p = &i;
p = &ci;
*p = 10; // error here
2. int *const cp; <----- the pointer 'cp' is const, you can't reassign value to 'cp' twice.
e.g.:
int i;
int j;
int *const cp = &i;
*cp = 3;
*cp = 4;
cp = &j; // error here
together:
const.c
1 #include<stdio.h>
2 #include<stdlib.h>
3 void main()
4 {
5 int i = 5;
6 int j = 7;
7 const int ci = 4;
8 const int *p;
9 int *const cp = &j;
10 const int *const cp1 = &ci; // both pointer and what it points to are const.
11 p = &ci;
12 p = &i;
13 printf("*p=%d\n", *p);
14 printf("*cp=%d\n", *cp);
15 printf("*cp1=%d\n", *cp1);
16 const int **pp;
17 pp = &p;
18 printf("**pp=%d\n", **pp);
19 const int *const *const cpp = &cp1;
20 printf("**cpp=%d\n", **cpp);
21 exit(EXIT_SUCCESS);
22 }