指針常量 (const pointer)(意為常量是指針)
p是指針,const要修飾p矩欠,所以const要在p前:
int val = 100;
int *const p = &val;
p++; //非法;
*p = 42; //合法;
常量指針 (pointer to const)(意為指向常量的指針)
也就是*p不能變财剖,所以const放在*p前面:
int val = 100;
const int *p = &val;
p++; //合法;
*p = 42; //非法;
其實只有中文才會區(qū)分得這么蛋疼,因為人們都喜歡縮寫縮寫癌淮,最后苦了自己躺坟。看二者英文名字就完全沒有這種區(qū)分障礙了乳蓄。
關(guān)鍵是記住const修飾誰就緊緊靠在誰前面咪橙。
送分題:
const int *const p = &val;
p++;
*p = 42;
p++和*p = 42兩條語句是否合法?
</br>
數(shù)組指針(本質(zhì)是一個指針,它指向一個數(shù)組美侦,數(shù)組大小為4):
int (*p)[4];
指針數(shù)組(本質(zhì)是一個數(shù)組产舞,里面存放4個指針):
int *p[4];
關(guān)鍵看結(jié)合順序,int (p)[4]的括號優(yōu)先級高菠剩,因此它先是一個指針易猫,然后就明白是指向一個存放4個int類型的數(shù)組;int *p[4]先是看p[4]具壮,顯然是個大小為4的數(shù)組准颓,再看類型是int *,說明里面存放整數(shù)指針*
送分題:
int *(*p)[4];
這條語句何解棺妓?