int main() { int a[4]={1,2,3,4}; int *p1=(int*)(&a+1); int *p2=(int*)((int)a+1); printf("%x,%x",p1[-1],*p2); return 0; }
大小端和操作系统没关系, 是由 CPU 决定的. x86 的 CPU 都是小端模式的. 如果是大端, int 为 32 位的话, a 的内存就是: 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 p2 指向第二个字节, 取 4 个作为 int 就是 00 00 01 00 在大端系统里对应的就是 0x100, 你的 0x10000 是怎么来的?
70,024
社区成员
243,263
社区内容
加载中
试试用AI创作助手写篇文章吧