注册 登录
编程论坛 C++教室

一道简单数组题

printflove 发布于 2014-03-12 10:56, 400 次点击
#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从哪来的?
5 回复
#2
rjsp2014-03-12 10:59
ptr 指向 a[5]
ptr-1 就是指向 a[4] 啦
#3
printflove2014-03-12 11:01
回复 2楼 rjsp
ptr是怎么指向a[5]的啊?
#4
printflove2014-03-12 11:16
哦,有些明白了,&a+1是a[5]的地址,谢谢啊
#5
panrui05122014-03-12 21:53
不对吧,&a+1怎么是a[5]的地址呢?
#6
rjsp2014-03-13 11:09
以下是引用panrui0512在2014-3-12 21:53:58的发言:

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

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