Objective C const NSString * vs NSString * const

Constant pointer is NOT a pointer to constant. Constant pointer means the pointer is constant. E.g. constant pointer int * const ptr2; indicates that ptr2 is a pointer which is constant. This means that ptr2 cannot be made to point to another integer. However, the integer pointed by ptr2 can be changed.

Whereas a pointer to constant const int * ptr1; indicates that ptr1 is a pointer that points to a constant integer. The integer is constant and cannot be changed. However, the pointer ptr1 can be made to point to some other integer.


It's not the same. The const modifier can be applied to the value, or the pointer to the value.


int * const

A constant pointer (not modifiable) to an integer (its value can be modified)


const int *

A modifiable pointer to a constant integer (its value can't be modified)


So you can imagine:

const int * const;