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 後 * 是以就 常量指針。
常量指針:分開讀,常量、指針,意思就是這個指針是常量,是以指針本身的值不能改;
指針常量:分開讀,指針、常量,先指針,後常量,指針指向一個常量,是以常量的值不能改。
注:如果您能找到官方的對兩個稱謂的規範,請指正,謝謝!