C语言:请简明说明一下“指针数组”和“数组指针”的区别是什么?
1个回答
展开全部
“指针数组”是数组,数组中的每个元素都是指针;“数组指针”是指针,这个指针是指向一个数组的。
申明时不同:如int *p[8];,由于[]的优先级比*高,所以被解释为int *(p[8]);,即p是一个有8个元素的数组名,其8个元素都是int *型指针。而如int (*p)[8];,由于()的优先级比[]高,所以p是一个指针,它能指向具有8个int型元素的一维数组,所以p是一个“数组指针”。
要琢磨一下,若有int a[40],*q; q=a;,这里的q并不是“数组指针”而只是一个int *型指针,它指向数组a的第一个元素。如果这里做q++或++q操作后,那么q就指向了a[1],而2中的int (*p)[8];若p++或++p后则p就指向了8个int元素后的地方,大不一样噢!
指向数组的指针(即如2那样的所谓数组指针)一定要弄清楚,否则用指针操作二维以上的数组时不一头雾水……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询