中易网

请教书上一段C语言关于指针数组的程序?主要请教荧光笔所画区域,请详细解释一下

答案:2  悬赏:20  
解决时间 2021-01-12 13:50
  • 提问者网友:焚苦与心
  • 2021-01-11 23:05
请教书上一段C语言关于指针数组的程序?主要请教荧光笔所画区域,请详细解释一下
最佳答案
  • 二级知识专家网友:一秋
  • 2021-01-11 23:29
首先int *pA[3][4]和 int (*pA)[3][4]
是两个完全不同的定义
int *pA[3][4]:定义了一个数组, 每个成员是指针
int (*pA)[3][4] :定义了一个指针,指向一个有3x4个成员的数组

警告的意思
显然 A 是一个数组, 需要赋值给指针, 而你赋值给一个数组是不对的

pA是一级指针,,指向1这个位置, 但是你应该看作指向的是1,2,3,4这个整体
追问:那 int (*pA)[3][4]; 定义的指针pA不是指针数组吗?
第三个荧光笔处pA[i][j][k]不是数组的形式吗?
能再详细解释一下第二个和第三个荧光笔画的地方吗?
追答:是指向数组的指针!

咱们一般说指针数组是说1个数组里面放了指针

对,指针可以通过数组引用

2和3意思一样,你可以认为是简化写法
全部回答
  • 1楼网友:狂恋
  • 2021-01-11 23:56
感觉你一下子深入的太快了
第一个问题 assignment of pointer to array3,4 of int to pointer to int 的意思是你把数值赋值给了指针 所以出现了警告“int *pA[3][4]”代表的是一个指针 一个指向二维数组的指针
而“int (*pA)[3][4]” 则代表的是一个二维数组,数组内容是一个int型的指针
为什么出现三个下标 就如同一个int *p 取第三位数值 可以用p[3]一样
(*(*(pA+i)+j)+k)是指向A[i][j][k]!问题太多 太乱 建议先从简单的看起
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息