C++:快速掌握辨別const pointer與pointer to const

判斷準則爲:以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";     //兩行代碼都會報錯,因爲指針所指向空間和空間內的內容皆不可更改
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章