变量在内存中的字节顺序是-----大端还是小端?

所谓大小端即对数据进行存放时字节顺序的区别,大端方式将高位存放在低地址,小端方式将高位存放在高地址。(一般来说cpu都采用的是小端字节序存储)

以栈来看(在这普及一个知识点:栈中存放数据是由高地址往低地址存,而堆中是从低地址往高地址存,形参都是在栈上开辟的,形参的传递是实参从右向左传递,所以形参中右侧的变量地址高于左侧的变量地址)

变量在内存中的字节顺序是-----大端还是小端?

这里将一个32位的16进制(4字节)数举例eg:0X12345678(1k=1024个字节=1024BYTE=1024个ASCII码,1BYTE=8Bit(2进制),16进制的一位数代表2进制的4位数,即2的4次方减一,所以两位十六进制数即一个字节。)

所以如图即大小端的存储模式

地址偏移

大端模式

小端模式

0x00(低地址)

12(高位)

78(低位)

0x01

34

56

0x02

56

34

0x03(高地址)

78(低位)

12(高位)

例如,假设从内存地址0x0000 开始有以下数据:
0x12 0x34 0xab 0xcd
如 果我们去读取一个地址为0x0000 的四个字节变量,若字节序为大端,则读出结果为0x1234abcd;若字节序位小端,则读出结果为 0xcdab3412。如果我们将0x1234abcd 写入到以0x0000 开始的内存中,则小端和大端模式的存放结果如下:
地址              0x0000     0x0001    0x0002    0x0003
大端模式         0x12          0x34       0xab        0xcd
小端模式         0xcd          0xab       0x34        0x12

在这里我们可以调用程序测试一下我们所说的机器采用小端(使用共用体)字节序是否正确?

变量在内存中的字节顺序是-----大端还是小端?

可验证我用的这个机器采用的时小端字节序。