天天看點

常量指針 與 指針常量

int main()
{
	int i = 1;
	int j = 2;
	int *const p1 = &i;	// 常量指針 : 指針本身是常量
	int const *p2 = &j;	// 指針常量 : 指向的記憶體是常量

	*p1 = 3;
//	p1 = &j;	// Error
	p2 = &i;
//	*p2 = 3;	// Error
	
	return 0;
}
           

以上代碼供參考。

PS:這兩個名稱其實網上說法不一,有人颠倒着說,有人這麼說。

咱們不糾結怎麼稱呼,隻要了解就好。 (我找了一下《C程式設計語言》[畢竟C語言之父,人家是權威] 裡,貌似沒有明确命名,是以我就不敢下定論了)

我是這麼記憶的:

    從右往左看,誰先出來,讀誰。例如:int * const p 從右往左看,先 const 後 * 是以就 常量指針。

常量指針:分開讀,常量、指針,意思就是這個指針是常量,是以指針本身的值不能改;

指針常量:分開讀,指針、常量,先指針,後常量,指針指向一個常量,是以常量的值不能改。

注:如果您能找到官方的對兩個稱謂的規範,請指正,謝謝!