标题:一道简单数组题
只看楼主
printflove
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-21
结帖率:50%
已结贴  问题点数:20 回复次数:5 
一道简单数组题
#include<stdio.h>
void main(void)
{
    int a[5]={1,2,3,4,5};
    int *ptr=(int *)(&a+1);
    printf("%d,%d",*(a+1),*(ptr-1));
}

结果为何是2,5啊,5从哪来的?
2014-03-12 10:56
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
ptr 指向 a[5]
ptr-1 就是指向 a[4] 啦
2014-03-12 10:59
printflove
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-21
得分:0 
回复 2楼 rjsp
ptr是怎么指向a[5]的啊?
2014-03-12 11:01
printflove
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-21
得分:0 
哦,有些明白了,&a+1是a[5]的地址,谢谢啊
2014-03-12 11:16
panrui0512
Rank: 1
等 级:新手上路
帖 子:20
专家分:3
注 册:2014-1-11
得分:0 
不对吧,&a+1怎么是a[5]的地址呢?
2014-03-12 21:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用panrui0512在2014-3-12 21:53:58的发言:

不对吧,&a+1怎么是a[5]的地址呢?

应该说 “&a+1的值”和“a+5的值”相同,但类型不同,前者是 int (*)[5],后者是 int *
2014-03-13 11:09



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




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

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