#include<stdio.h>
int main()
{
int arr[3] = {2, 3, 4};
char *p;
p = arr;
p = (char*)((int*)(p));
printf("%d, ", *p);
p = (int*)(p+1);
printf("%d", *p);
return 0;
}
是不是p =(int *)(p + 1);指向数组的下一个元素? (即3?)所以输出应该是2,3。但输出是2,0。为什么?为什么输出2,0而不是2,3?
不,因为'p'是一个char *指针。给char *指针加1不同于给int *指针加1。 –
Little Endian机器。 –
这是我猜想的endianness .....你增加了p,它会移动到下一个字节...然后它是0,因为在你的MSBare首先存储... – coderredoc