判斷準則爲:以const爲基準,在const左邊最近的類型即爲const所要修飾的類型,若左邊無類型,則右邊最近的類型爲const所要修飾的類型。
char const* pStr1 我們發現const左邊最近的類型爲char,故const修飾的爲char類型,即此指針所指向空間內的值是常量,不可修改。
char* const pStr2 我們發現const左邊最近的類型爲*,故const修飾的爲指針本身,即指針所指向的空間不可修改。
char const* const pStr3 第一個const左邊最近類型爲char,第二個const左邊最近類型爲*,故指針所指向的空間與空間內的內容皆不可修改。
代碼示例:
int main()
{
char strHello[] = { "hello" };
char const* pStr1 = "hello";//pStr1指針所指向空間內的內容是常量,不可更改
char* const pStr2 = strHello;//pStr2指針所指向的空間不能更改
char const* const pStr3 = "hello";//指針所指向空間和空間內的內容皆不可更改
//*pStr1 = "hello1"; 此行代碼會報錯,因爲pStr1指針所指向的內容不能更改
pStr1 = "hello1"; //pStr1所指向的空間可以更改
*pStr2 = 'e'; //pStr2所指向空間內的內容可以更改
//pStr2 = "hello1"; //此行代碼會報錯,因爲pStr2所指向的空間不可以更改
//*pStr3 = 'e';
//pStr3 = "hello1"; //兩行代碼都會報錯,因爲指針所指向空間和空間內的內容皆不可更改
}