| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:有关指针与二维数组的问题
只看楼主 加入收藏
iBreathebsb
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2014-7-20
结帖率:100%
收藏
 问题点数:0 回复次数:5 
有关指针与二维数组的问题
这种理解是否正确?


a[0]和*(a+0)等价的:
首先a[0]是数组a[]中的第一个确切的元素,也就是这个数组元素的值。而a+0中,a是数组名,可以表示数组的第一个元素的地址,a+0仍然是第一个地址没变,于是取这个地址的值*(a+0),就是a[0]了,其中前面加个*号表示“取值运算”。
再来看*(*(a+i)+j):首先在二维数组中a[i]表示数组中第i行的首地址,即*(a+i)表示第i行0列的地址(即元素a[i][0]的地址),于是(*(a+i)+j)就表示a[i][j]的地址了,再在前面加个*号,就是取a[i][j]的值了.
2014-07-22 11:53
lingyg
Rank: 1
等 级:新手上路
威 望:1
帖 子:18
专家分:2
注 册:2014-7-14
收藏
得分:0 
发表个人理解,请大家指正。感觉是这样的,难理解的地方在:a[i]等于*(a+i),表示的是第i行第0列的地址。要与1维数组区别开来,

学无止境
2014-07-22 15:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
『a[i]和*(a+i)等价的』这是C标准所规定好的
2014-07-22 15:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
ISO/IEC 9899:201x 之 6.5.2.1 Array subscripting 有云:
The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
2014-07-22 15:15
iBreathebsb
Rank: 2
等 级:论坛游民
帖 子:11
专家分:10
注 册:2014-7-20
收藏
得分:0 
回复 2 楼 lingyg
有道理
2014-07-22 17:30
小旋风小王爷
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-7-30
收藏
得分:0 
我一直都是将[ ]等价*来理解的
2014-07-30 15:08
快速回复:有关指针与二维数组的问题
数据加载中...
 
   



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

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