C

m0_463737261616 2020-02-20 11:30:21
对于一个二维数组a[2][3] 其实a[2] 和2[a] 一样,都是一个表达式,[]是一个运算符,一个操作数是整数,另一个是指针类型 数组名在大多数情况下退化为指针,对于二维 那这个a退化为数组指针常量 a[2]等价于*(a+2),那这种情况下a是什么指针类型
...全文
67 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-02-20
  • 打赏
  • 举报
回复
a是数组的指针 比如 int a[2][3],a是int (*)[3]类型指针,指向长度为3的整形数组的指针。所以a+1,地址会移动数组长度*sizeof(int)个字节 lz可以自己打印测试看看 int a[2][3]; printf(“%p, %p”, a, a+1); 看看两个地址相差多少个字节就知道了。
m0_463737261616 2020-02-20
  • 打赏
  • 举报
回复
一个新手,C初学者 ~~~
自信男孩 2020-02-20
  • 打赏
  • 举报
回复
a是数组,不能完全等同于指针.不过,可以拿数组当指针使用(注意数组名不能做左值),当然,指针也可以当数组使用,再某些情况下是可以相互转换的.

69,368

社区成员

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

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