#include <stdio.h>
int main()
{
int a[]={11,12,13},*p;
printf("%x\n",a);
for(int i=0;i<3;i++)
printf("%x ",(a+i));
p=(&a)+1; //LINE1
printf("this is this %x\n",p); //LINE2
printf("%d ",*p);
printf("%d\n",*(p-1));
return 0;
}
在LINE1上進行指針運算後,爲什麼LINE2打印的地址不等於a [1]?相反,還有4個字節的差異。int * p = somearray但(p + 1)不等於somearray的地址[1]。爲什麼?
請您分享該程序的輸出。這很難理解,至少對我來說 –
'printf''%x'接受一個'unsigned int',而不是'int *'。 – melpomene
'a'的類型爲int(*)[3]'。表達式'(&a)+ 1'偏移指針'sizeof(int(*)[3])'。取出'&'。 –