标题:二维数组中的元素地址问题
只看楼主
natto
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2016-4-10
结帖率:70%
已结贴  问题点数:20 回复次数:5 
二维数组中的元素地址问题
在二维数组中,有如下定义:
int *p,a[3][4];



我翻了三四本书,所有书都说若有表达式a[0]+1,表达式中的1的单位应当是2个字节,但在指针的章节中可以看到,这样的加减是以int为准的,于是我运行以下程序以后,发现的确实是4个字节,请教一下,这是书本错误么,还是我的程序有问题,运行环境32位windows系统,vc6.0;以下结果在附件图片中:望各位前辈能解惑,谢谢
程序代码:
#include<stdio.h>
main()
{
    int *p,*q,a[3][4];
    p=a+0;
    q=a[0]+1;
    printf("%4d %4d\n",p,q);
}

搜索更多相关主题的帖子: windows 运行环境 表达式 图片 元素 
2016-04-25 16:46
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:4 
不知道书上具体怎么写的,能截图看看吗?
2016-04-25 18:08
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:4 
回复 楼主 natto
和你用什么编译系统有关系。有的是2节,有的是4节
2016-04-25 19:16
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
printf("%d\n",sizeof(int));
2016-04-26 08:37
未来大仙
Rank: 6Rank: 6
来 自:黑窟窿
等 级:侠之大者
威 望:4
帖 子:263
专家分:491
注 册:2015-6-20
得分:4 
二维数组,其实就是多个一维数组的组合,比如你的a[3][4] 就是 3个 a[4] 的数组拼在一起了,   a[0]  按地址来说的话,就是第一行的第一个的地址,那么a[1]就是第二行的第一个的地址,那么 +1就是往右边移动一个地址,  你这里声明的是int类型,一般是四个字节,所以每个地址相差4

好好学习,天天向上!
2016-04-26 10:38
nupt_陈小二
Rank: 2
等 级:论坛游民
帖 子:13
专家分:36
注 册:2016-4-17
得分:4 
vc中int都是4个字节。
2016-04-26 10:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464103-1-1.html




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

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