一個不容易混淆的方法區分諸如const int * 、int const *和int * const

參考這位的說法,具體代碼

	const int a = 1;
	int const b = 2;//&a 和 &b 是const int * 類型
	a = 1;//錯誤
	b = 1;//錯誤
	const int * p1 = &a;
	int const * p2 = &a;//p1,p2不報錯,說明兩者等價
	int * const p3 = &a;//報錯,const int *類型數據無法初始化int * const類型的實體
	
結論:const修飾其左邊的類型,例外爲,如果const在最左邊,則修飾其右邊的類型聲明的第一個部分(const只能修飾一個詞)。
所以const int 跟 int const等價,進一步所以const int * 和 int const * 等價(int *的第一個部分爲int)。
所以int const * 爲 “constant integer”,即const 修飾 int,所指的整數不能變。
所以int * const 爲“const pointer”,即const 修飾 *,指向不能變。
(int *) const 是錯誤的表達方式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章