标题:请教:二维数组地址输出编译器会自动除于变量长度么
只看楼主
natto
Rank: 1
等 级:新手上路
帖 子:27
专家分:5
注 册:2016-4-10
结帖率:70%
已结贴  问题点数:10 回复次数:2 
请教:二维数组地址输出编译器会自动除于变量长度么
据谭教授所著书中,写出如下实验程序:
大家可以看到如下附件的图,怎么最后一个printf出来的是1呢,不是应该是4么,编译器会自动把地址除4?还是我哪里理解有误或是程序编写有误?

搜索更多相关主题的帖子: 编译器 程序编写 
2016-04-26 21:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
p 是 int型指针,步长是sizeof(int)
p = &a[2]
q = &a[3]
q = p + 1
看看:
    printf("%d\n", sizeof(int));
    printf("%d\n", p);
    printf("%d\n", q);
    printf("%d\n", p+1);




[此贴子已经被作者于2016-4-26 21:44编辑过]

2016-04-26 21:42
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:5 
当两个指针指向同一个数组,指针相减编译器会自动进行步长计算,也就是实际得到的是间隔的元素个数而不是字节数。

未佩好剑,转身便已是江湖
2016-04-26 22:41



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




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

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