关于一维数组,二维数组

zengchunming 2012-09-30 07:43:29
// 使用指针访问变量
int arr1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int arr2[3]={11,22,33};
// 使用最多的方法, 遍历数组。

// 指针法:
//int *pointer1=&arr1[0][0];
int *p=arr1; // 这里为什么报错啊?? 使用arr2则能遍历一维数组
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
New_options 2012-10-01
  • 打赏
  • 举报
回复
int arr1[3][3] 的首地址类型是 int (*p)[3][3] 去看看数组地址相关的知识吧!
AnYidan 2012-10-01
  • 打赏
  • 举报
回复
先看看报什么错
hyp41226 2012-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
// 使用指针访问变量
int arr1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int arr2[3]={11,22,33};
// 使用最多的方法, 遍历数组。

// 指针法:
//int *pointer1=&arr1[0][0];
int *p=arr1; // 这里为什么报错啊?? 使用arr2则能遍历一维数组
[/Quote]
int * p 定义一个指向int 类型的指针
arr1 因为arr1是数组首元素的地址。所以arr1的值和&arr1[0]相同,而arr1[0]是包含三个int的数组,所以arr1是三个int大小对象的地址。
两者指向的数据对象根本不一样。所以报错。
而arr2是一维数组,arr2指向数组首元素,也就是一个int,跟*p所指向的数据类型一样。所以可以遍历一维数组。
longburulin 2012-09-30
  • 打赏
  • 举报
回复
arr1是一维数组的地址么?应该int*p=arr1【0】

69,382

社区成员

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

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