devxlogo

Constant Pointer

Constant Pointer

Question:
Can you expalin the difference between the following statements in some examples and when do we need them:

const char *ptr; //char *const ptr; //

Answer:
The following statement:

const char *ptr; 

defines a pointer to a const char array. This means that the pointer itself can change its value (e.g., you can do something like ptr++ or ptr–, as well as assign a new value to ptr). However, you cannot change the characters in the array to which ptr points. Thus ptr[0] = ‘a’ is illegal. On the other hand,

char *const ptr; 

declares a const pinter to a non const char array. You can change the characters in the array through the const pointer: ptr[0] = ‘a’;//OKbut you cannot change the pointer itself: ptr++, ptr– and assigning a new value to ptr are all illegal.

You need the first form to disable undesirbale changes to the string, such as when you pass it to another function that is not allowed to modify it.

The second form is rarer. It is used when the pointer is mapped to a hardware port, for example.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist