黑马程序员技术交流社区

标题: int *p = (int *)(&a+1);这个是什么意思哦 [打印本页]

作者: feng2706    时间: 2016-3-1 22:35
标题: int *p = (int *)(&a+1);这个是什么意思哦
#include <stdio.h>
int main(){
    int a[]={1,2,3,4,5};
    int *p = (int *)(&a+1);
    printf("%d\n",*(p-1));
    return 0;

}
作者: zzt244    时间: 2016-3-2 02:06
int *p = (int *)(&a+1)   后面的&a+1就是数组越界
相当于a数组最后的元素5 越界了4个字节 这样理解比较清晰
作者: zzt244    时间: 2016-3-2 02:07
zzt244 发表于 2016-3-2 02:06
int *p = (int *)(&a+1)   后面的&a+1就是数组越界
相当于a数组最后的元素5 越界了4个字节 这样理解比较清 ...

不是元素5去越界的哦 画图比较容易看
作者: 吴振伟    时间: 2016-3-2 08:07
66666666666666
作者: 337325635    时间: 2016-3-7 22:23
路过看看
作者: wx_MkPtTU4D    时间: 2016-3-7 23:13

#include <stdio.h>
    int main(){
        int a[]={1,2,3,4,5};
        int *p = (int *)(&a+1);//&a是这个数组的地址,加1就到数组外面去了,在第五个元素的后面,即数字5的后面4个字节低字节地址就是p的值,,
        printf("%d\n",*(p-1));//p-1就是数组第五个元素的地址,*一下,就是第五个元素的值!
        return 0;
        
    }

作者: 米阳    时间: 2016-3-8 08:55
看看                     
作者: baye1992    时间: 2016-3-8 13:35
wx_MkPtTU4D 发表于 2016-3-7 23:13
#include
    int main(){
        int a[]={1,2,3,4,5};

膜拜大神~~
作者: dx206    时间: 2016-3-8 13:44
楼上正解!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2