C语言三维数组,我直接给出三个下标居然不能输出?

qq_33447655 2016-02-01 05:20:57

它提示 错误 initializing' : cannot convert from 'int' to 'int *'

int *pa=A[0][0][3]; 意思 就是让指针指向数组元素中的4嘛让后我在 printf 出到屏幕! 怎么会提示这个呢?
我改成 int *pa=A[0][0]; 然后后面加3句pa++,有能输出结果4。
pa++=pa=pa+1; 这个pa+1意思就是指让指针往后移动一个int型字节的位置?4这个元素应该被存储在数组A 起始位置后的12个字节的那个位置?
...全文
280 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2016-02-02
  • 打赏
  • 举报
回复
引用 4 楼 qq_33447655 的回复:
[quote=引用 3 楼 paschen 的回复:] A[0][0][3] 类型是int, 不是int* 你需要在前面加上&取地址后则是int* 或者A[i][j] 这种形式也是int*
版主,我最后一部分的理解对不? 我觉得我一段程序,一个函数。我不能只是知道他的语法我想要的是理解!而不是知其然不知其所以然!否则这等于没学![/quote] T* a 加1移动的是sizeof(T) T** a加1移动的是sizeof(T*) T[x][y] 加1移动的是sizeof(T[x]) 以此类推
qq_33447655 2016-02-02
  • 打赏
  • 举报
回复
引用 3 楼 paschen 的回复:
A[0][0][3] 类型是int, 不是int* 你需要在前面加上&取地址后则是int* 或者A[i][j] 这种形式也是int*
版主,我最后一部分的理解对不? 我觉得我一段程序,一个函数。我不能只是知道他的语法我想要的是理解!而不是知其然不知其所以然!否则这等于没学!
galiniur0u 2016-02-02
  • 打赏
  • 举报
回复
数组你可以理解为一个指针: 例如int a[2][3],这时a就是一个指针。 而当你使用a[1][2]时,这就已经相当于将指针指向了这个数据。就已经是一个int了。这时你要把a[1][2]赋值给int *p当然就要取地址。 当你定义三维数组int a[2][3][4],最终把int *pa = a[1][2];是正确的原理跟上面一样,a[1][2]还未指定到某一个数字,因此它是指针,可以进行赋值操作。 对于pa ++,是相当于将指针移动四个字节的位置。
paschen 2016-02-01
  • 打赏
  • 举报
回复
A[0][0][3] 类型是int, 不是int* 你需要在前面加上&取地址后则是int* 或者A[i][j] 这种形式也是int*
苏叔叔 2016-02-01
  • 打赏
  • 举报
回复
同意楼上的……
Buddy.Zhang 2016-02-01
  • 打赏
  • 举报
回复
int *pa=&A[0][0][3];

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧