2009年12月9日 星期三

const char* p 與 char* const p 的差別

const char* p
是一個變數指標(variable pointer) p 指向 字元常數(const char)
也就是說,p可以改值,導致指向對象可以不同
但指向的對象永遠會是定值

const char* p;
const char ch1 = 'a';
const char ch2 = 'b';
p = &ch1;
p = &ch2;

---------------------------------------------------------------
char* const p
是一個常數指標(const pointer) p 指向 字元變數 (variable char)
也就是說,p不可以改值,會永遠指向同一個對象
但指向的對象可以改變內容

char ch='a';
char* const p = &ch;
/* 注意這邊初始化要在定義的時候就做了,因為p是常數,定義完之後無法改值 */
ch='b';

---------------------------------------------------------------
const char* const p
這就是以上兩項合併的結果
是一個常數指標(const pointer) p 指向 字元常數 (const char)
兩者可是都不能更動的

const char ch='a';
const char* const p = &ch;


[Reference]
http://twpug.net/docs/ccfaq/node164.html

沒有留言:

張貼留言