正如我们在两个print语句中所见,打印*(x+1)
和*(y+1)
给出了数组的第二个元素,但是使用col
指针访问整个4字节内存将打印元素相反,为什么会发生呢?
#include<stdio.h>
int main() {
char x[4]={'a',0,0,0};
unsigned int *col = (void *) x;
printf("%d %0.8x", *(x+1), *col); // 0 00000061
char y[4]={'a','b','c','d'};
col = (void *) y;
printf("%d %0.8x", *(y+1), *col); // 98 64636261
}