指针常量 (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; //非法;
其实只有中文才会区分得这么蛋疼,因为人们都喜欢缩写缩写,最后苦了自己。看二者英文名字就完全没有这种区分障碍了。
关键是记住const修饰谁就紧紧靠在谁前面。
送分题:
const int *const p = &val;
p++;
*p = 42;
p++和*p = 42两条语句是否合法?
</br>
数组指针(本质是一个指针,它指向一个数组,数组大小为4):
int (*p)[4];
指针数组(本质是一个数组,里面存放4个指针):
int *p[4];
关键看结合顺序,int (p)[4]的括号优先级高,因此它先是一个指针,然后就明白是指向一个存放4个int类型的数组;int *p[4]先是看p[4],显然是个大小为4的数组,再看类型是int *,说明里面存放整数指针*
送分题:
int *(*p)[4];
这条语句何解?