| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1638 人关注过本帖
标题:[求助]关于二维数组指针的一些问题
取消只看楼主 加入收藏
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
结帖率:100%
收藏
 问题点数:0 回复次数:3 
[求助]关于二维数组指针的一些问题
1. int a[3][4], (*p)[4];
2. p = a;
3. p+i == &b[i],
4. b[i] ==*(p + i),
5. b[i] + j == &b[i][j],
6. b[i][j] == *(*(p + i) + j)


1. 定义一个二维数组 和 一个数组指针
2. 正数组指针指向这个二维数组
3. 第i行的首地址
4. 第i行一维数组的值
5. ?
6. ?

帮忙看一下 我前4行理解的对不对? 还有第5,6行是什么意思?看不懂 帮忙解释一下

搜索更多相关主题的帖子: 指针 
2007-10-13 14:49
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
1. int a[3][4], (*p)[4];
2. p = a;
3. p+i == &b[i],
4. b[i] ==*(p + i),
5. b[i] + j == &b[i][j],
6. b[i][j] == *(*(p + i) + j)

这个我应该搞懂了
它不是一个完整的程序
int (*p)[4]是一个行指针
b只是一个临时的东西 把a[3][4]这个二维数组分成几个一维数组 每个一维数组名是b[0],b[1],b[2],都包含4个整型


p = a; //让p指向数组a的首地址
p+i == &b[i], //第i行的首地址,也就是第i个一维数组的首地址(每个元素是一个一维数组,对元素取址)
b[i] == *(p + i), //b[i] ==*(&b[i]),*&抵消,b[i]也是第i行的首地址(也可以这样理解,比如b[i][4],b[i]可以看作是数组名,也就是这个一维数组的地址)
b[i] + j == &b[i][j], //b[i][4]这个一维数组偏移j位,就是b[i][4]中第j个元素的地址也就是&b[i][j]
b[i][j] == *(*(p + i) + j) //全部替换一下 再取值 得出b[i][j]的值,也就是a[3][4]这个二维数组第i行第j列的值



楼上int (*p)[4]等价于int p[4];是不可能的吧 前边是数组指针后边是数组啊
2007-10-13 16:23
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
???               
2007-10-13 16:43
奥丁
Rank: 1
等 级:新手上路
帖 子:327
专家分:0
注 册:2006-10-18
收藏
得分:0 
"int (*p)[4] 不是指针数组"

我说的是 数组指针, 是指向一个含有4个整型元素的一维数组 也就是我这里的每一行 行指针

当然也是个指针了
2007-10-13 20:05
快速回复:[求助]关于二维数组指针的一些问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015972 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved