dongxueli 发表于 2009-12-8 16:19:51

这段程序怎么理解啊?

#include <stdio.h>
void main(){
int a={1,2,3,4,5};
13
int * p = (int *)(&a+1);
printf(“%d”,p[-1]);
}
那么,输出结果为5

请前辈帮忙分析一下。

fangbing007 发表于 2009-12-9 00:09:15

#include <stdio.h>
void main(){
int a={1,2,3,4,5};
13
int * p = (int *)(&a+1)-1;
printf(“%d”,*p);
}
指向数组的指针+1,再普通指针减一

jackiezeng 发表于 2009-12-9 00:54:16

没有理解,希望高人能给个通俗的讲解,

tiger1125 发表于 2009-12-9 00:59:07

#include <stdio.h>
void main(){
int a={1,2,3,4,5};
13
int * p = (int *)(&a+1);
printf(“%d”,p[-1]);
}

中间那个13是什么来的?

cock 发表于 2009-12-9 03:07:56

13,会不会是0xd,换行?

shaofan 发表于 2011-8-30 10:39:28

int * p = (int *)(&a+1);//指针P已经指向了&a
p[-1] 就是a = 5
页: [1]
查看完整版本: 这段程序怎么理解啊?