C语言:请简明说明一下“指针数组”和“数组指针”的区别是什么?

 我来答
White_MouseYBZ
2021-02-04 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6505万
展开全部
  1. “指针数组”是数组,数组中的每个元素都是指针;“数组指针”是指针,这个指针是指向一个数组的。

  2. 申明时不同:如int *p[8];,由于[]的优先级比*高,所以被解释为int *(p[8]);,即p是一个有8个元素的数组名,其8个元素都是int *型指针。而如int (*p)[8];,由于()的优先级比[]高,所以p是一个指针,它能指向具有8个int型元素的一维数组,所以p是一个“数组指针”。

  3. 要琢磨一下,若有int a[40],*q; q=a;,这里的q并不是“数组指针”而只是一个int *型指针,它指向数组a的第一个元素。如果这里做q++或++q操作后,那么q就指向了a[1],而2中的int (*p)[8];若p++或++p后则p就指向了8个int元素后的地方,大不一样噢!

  4. 指向数组的指针(即如2那样的所谓数组指针)一定要弄清楚,否则用指针操作二维以上的数组时不一头雾水……

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式