Everything
A.1.5 Defining the const Constant Pointer

The pointer is interpreted differently according to where "const" is specified.

[Example 1]

const char *p;

In this example, the object (*p) indicated by the pointer cannot be changed. The pointer itself (p) can be changed. Therefore, the result becomes as shown below and the pointer itself is mapped to RAM (section B).

*p = 0; /* Error */

p = 0; /* Correct */

[Example 2]

char *const p;

In this example, the pointer itself (p) cannot be changed. The object (*p) indicated by the pointer can be changed. Therefore, the result becomes as shown below and the pointer itself is mapped to ROM (section C).

*p = 0; /* Correct */

p = 0; /* Error */

[Example 3]

char *const p;

In this example, the pointer itself (p) and the object (*p) indicated by the pointer cannot be changed. Therefore, the result becomes as shown below and the pointer itself is mapped to ROM (section C).

*p = 0; /* Error */

p = 0; /* Error */