Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

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

 

 

Sitemap