偶然的機(jī)會(huì)看到下面的代碼,看似簡(jiǎn)單,細(xì)細(xì)想來(lái)并非如此。
#include <stdio.h>
int main(int argc, char* argv[])
{
int a[5]={1,2,3,4,5};
int *ptr1=(int*)(&a+1);
int *ptr2=(int*)((int)a+1);
int *ptr3=(int*)(&a[0] + 1);
printf("%x,%x,%x\n",ptr1[-1],*ptr2,*ptr3);
getchar();
return 0;
}
題目雖小,但是考察的知識(shí)點(diǎn)可真多。運(yùn)行結(jié)果足夠我們出乎意料的。
注意的是這樣的代碼在我們的日常應(yīng)用是不多見(jiàn)的,不提倡的。但作為考題,足夠我們思索半天了。