little-endin, intel
$ cat t.c
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct tt {
int i1;
int i2;
int i3;
int i4;
int i5;
};
int main(int argc, char* argv[])
{
struct tt t;
t.i1=1;
t.i2=2;
t.i3=3;
t.i4=4;
t.i5=5;
long *ll = (long *)&(t.i3);
*ll = 0x0102030405060708;
printf("1(%x)=0x%x/n",&t.i1,t.i1);
printf("2(%x)=0x%x/n",&t.i2,t.i2);
printf("3(%x)=0x%x/n",&t.i3,t.i3);
printf("4(%x)=0x%x/n",&t.i4,t.i4);
printf("5(%x)=0x%x/n",&t.i5,t.i5);
printf("ll(%x)=0x%x/n",ll,*ll);
/* output
+-------------+-------------+-------------+-------------+-------------+
| 00 01 02 03 | 04 05 06 07 | 08 09 0a 0b | 0c 0d 0e 0f | 10 11 12 13 |
+-------------+-------------+-------------+-------------+-------------+
| i1 | i2 | i3(ll) | i4 | i5 |
+-------------+-------------+-------------+-------------+-------------+
| 01 00 00 00 | 02 00 00 00 | 08 07 06 05 | 04 03 02 01 | 05 00 00 00 |
+-------------+-------------+-------------+-------------+-------------+
}

本文通过一个简单的 C 语言程序示例,展示了在小端序机器(如 Intel 架构)上,结构体内整型变量的内存布局情况,并通过直接赋值给结构体中整型指针所指向的长整型变量,观察各成员变量的值变化,验证了该机器的字节序。
920

被折叠的 条评论
为什么被折叠?



