在以下两行中,
char a[5]={1,2,3,4,5};
char *ptr=(char *)(&a+1);
printf("%d",*(ptr-1));
Run Code Online (Sandbox Code Playgroud)
这在屏幕上打印5个.当使用a而不是&a时,
char a[5]={1,2,3,4,5};
char *ptr=(char *)(a+1);
printf("%d",*(ptr-1));
Run Code Online (Sandbox Code Playgroud)
这打印1
a和&a都是数组的起始地址.所以为什么这有区别?
char*ptr =&a + 1;
显示警告.