星期四, 7月 02, 2009

C/C++ 語言的 const 與 pointer 筆記

C/C++ 語言的 const 與 pointer 筆記

下面三行描述了 const 與 pointer 的關係:

const char* pcstring = "some text"; // 常數字串,指標可以修改,內容無法修改
char* const cpstring = "some text"; // 常數指標,指標無法修改,內容可改
const char* const pstring = "some text"; // 指標與內容皆不能更改

註記:
C 語言在 ANSI C99 後支援 const 關鍵字,常被函式用來當做傳遞字串參數的宣告,這在 Linux 裡很常見,例如 fprintf 在 Linux 裡的原型宣告:
int fprintf(FILE *restrict stream, const char *restrict format, ...);

這裡的 const char* 表示該函式不會更動這個字串,是一種保護資料不被函式修改的方式。

沒有留言: