| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:二维数组指针问题
取消只看楼主 加入收藏
lvqing9
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-8-13
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
二维数组指针问题
假设有如下数组定义语句:
int array[3][4];
array+i*(array+i),为什么是一样的啊?
我知道array+i指的是数组第i行地址,*(array+i)是什么啊?
在别的地方看有人说是第i行第一个元素的地址。为什么是这样?一般用“*”这个符号是求存在于某个地址的值,这里怎么能用它来求地址啊。
为什么要求array[i][0]的值要用*(*(array+i))啊?
很烦啊!大家一定要帮忙啊!
搜索更多相关主题的帖子: 指针 
2010-08-18 10:12
lvqing9
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-8-13
收藏
得分:0 
用一维数组的观点去理解,这个数组是一个三行四列的二维数组。可以看成是三个一维数组组成的,我们把它命名为a[1],a[2],a[3]分别代表三行的数组,每个数组里又含有4个数。这样我们就可以用一维数组指针的观点却解决这个问题了!
在一维数组指针当中a[i]==*(a+i),所以在二维数组当中我们可以用*(a+i)表示二维数组当中的a[i],在二维数组当中a[i]代表我们把它看成的一维数组名,这时只能表示首地址(数组名代表首地址)。就如同一维数组名只代表一维数组的首地址一样。其实这时的二维数组就是在一维数组的名下每个又有几个元素罢了!
所以在二维数组中a+i表示a[i]的地址也即行地址,*(a+i)表示a[i]的首地址。
首地址找到了该行地址就找到了,所以可以说明a+i和*(a+i)是一样的。
这是我想了半天的结果,拿出来让大家看看。最后我觉得对于一个二维数组a[i][j]大家可以这样看"( a[i] )[j]".

2010-08-18 11:52
lvqing9
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-8-13
收藏
得分:0 
回复 3楼 燕强
谢谢你!我最后也是这么想的。就这样理解吧!
2010-08-18 12:07
快速回复:二维数组指针问题
数据加载中...
 
   



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

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