| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 297 人关注过本帖
标题:麻烦帮解释下这个式子谢谢
只看楼主 加入收藏
wzmsld
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
麻烦帮解释下这个式子谢谢
int i,x[3][4];
i=*(*x+1)+1);
如上他题目是要选出不能将x[1][1]赋值给i的选项,这是其中一个,但是我看不懂,麻烦老手帮解释下谢谢了
2012-03-14 22:14
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:7 
二维数组部分的知识,简单说就是*(*(x+1)+1) 就相当于 x[1][1]

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-03-14 22:17
wzmsld
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-14
收藏
得分:0 
回复 2楼 lonmaor
能告诉我为什么吗?
2012-03-14 22:20
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:7 
多维数组在内存其实是不中存在的。都是多个一维数组在一起而已。
 a[4][3]  其实代表 有3个一维数组,每个一维数组4个元素。
 这也是为什么二维数组第二个[]里面的数字不能省略的原因,因为如果省略的,机器不知道数组的长度。
 第一个[]或者*(a+x),代表是第几个一维数组,第二个[]或者*((*a+x)+y),代表第x个一维数组的第y个元素。
 说到这个还好理解点,如果再加上指针数组*p[4]和数组指针(*p)[3],可能就更糊涂了。
 需要多做练习,就能理解了。
 
2012-03-15 00:22
星辰雁
Rank: 4
等 级:业余侠客
威 望:1
帖 子:93
专家分:275
注 册:2011-9-10
收藏
得分:7 
*(x+i)+j表示地址,
而*(*(x+i)+j)和*(x[i]+j)则是二维数组元素x[i][j]的值。
从二维数组的角度看,x代表二维数组首元素的地址,即首行(第0行)的首地址;
x+1代表第1行的首地址,x+2代表x[2]的首地址。
详细的请参考多维数组与指针的相关资料,多加深刻去理解。

不要认为CPU运算速度快就 把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做 ,因为CPU是为用户服务的,不是为我们程序员服务的!
2012-03-18 23:54
快速回复:麻烦帮解释下这个式子谢谢
数据加载中...
 
   



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

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