Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
Sep 7, 1999



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Constant Pointer

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

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

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';//OK but 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.

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date