问一个多维数组的问题

liangchencf 2008-08-19 10:39:25

#include <stdio.h>
int main()
{
char m[2][3];
printf("%p\n",m[0]);
printf("%p\n",m[0]+1);
printf("%d\n",sizeof(m[0]));
printf("%p\n",&m[0]);
printf("%p\n",&m[0]+1);
return 0;
}

如果m[0]可以作为数组的指针,那为啥m[0]+1的地址就是加了1呢?
...全文
78 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangchencf 2008-08-19
  • 打赏
  • 举报
回复
哦对了,输出结果是
$ a.exe
0x23fea4
0x23fea5
3
0x23fea4
0x23fea7
liangchencf 2008-08-19
  • 打赏
  • 举报
回复
行地址加1,编译器为什么是加1个字节和不是加上1行数据的便宜量呢?编译器能不能确定m[0]是什么类型的地址?
coverallwangp 2008-08-19
  • 打赏
  • 举报
回复
m[0]是行地址,m[0]+1就是下一行(这里假设是按行存储的)
lunarfan 2008-08-19
  • 打赏
  • 举报
回复
还有你的sizeof用的有问题

lunarfan 2008-08-19
  • 打赏
  • 举报
回复
乱死了, m指向行的,*m指向列,**m,m指向的值
m[0]=*(m+0)0行0列的地址
m[0]+1,看看m[0]它是指向0行0列的加1,当然走一个char的宽度

69,382

社区成员

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

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