指標常量和常量指標(指向常量的指標)
很多與檔案操作相關的函式其引數型別都是const char*(指向常量的指標)型別,下面就簡單介紹一下常量指標(指向常量的指標)(const char*)與指標常量(char *const)這兩種型別的區別。
1. const char*
型別: 指向常量的指標
const所在的位置: 在“*”的前面
const在char的前面或後面都是一樣的,但通常將const放置在char的前面
特點: 對一個利用const char*型別定義的常量指標來說,不能修改其指向的記憶體中的內容,但可以修改其所指向的記憶體地址
例子:
char ch[6] = "asdfg";
const char* pStr = ch;
如果對pStr變數進行如下操作:
*pStr = 'S'; // error
pStr = "qwert"; // ok
2. char* const
型別: 指標常量
const所在的位置: 在“*”的後面,但在所定義的指標名稱的前面
要注意的是,對於指標常量,必須在其定義的同時賦值。
指標常量表示指標本身是常量。
特點: 對一個利用char* const型別定義的指標常量來說,其值是一個指標常量,是不能修改的,但它所指向的內容是可以修改的
例子:
char ch[6] = "asdfg";
char* const pStr = ch;
如果對pStr變數進行如下操作:
pStr = "qwert"; // error
*pStr = 'S'; // ok