C语言&*符号使用及大端法小端法测试

工具:Microsoft Visual C++ 6.0

例子:

int a = 1;

int* b = &a;

C语言规定a表示存储单元中的数据,&a表示存储单元的地址,b存储的就是a的地址

C语言规定*a代表a中存储的地址对应的存储单元中的数据,所以*b就是等于1

C语言的&*介绍完毕,开始测试本机是大端法,还是小端法?

#include <stdio.h>
#include <stdlib.h>

int main(){
    int a = 0x12345678;
    char* c = &a;                    # c = a的值存储的4个字节地址的首地址,也就是低地址,char占用一个字节
    printf("%x\n", a);
    printf("%x\n", *(c + 0));        # 地址的地址,也就是a低地址存储的值,经过电脑运行,输出78,也就是低位存储在低地址,我的电脑是小端存储
    printf("%x\n", *(c + 1));
    printf("%x\n", *(c + 2));
    printf("%x\n", *(c + 3));
}

原文地址:https://www.cnblogs.com/kingofkai/p/11108414.html

时间: 2024-12-08 15:15:51

C语言&*符号使用及大端法小端法测试的相关文章

大端法和小端法

引言 在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的).对于跨越多个字节的数据类型(比如 int 长 4 个字节),如何在内存中对这些字节进行排序有两种常见的方法:大端法(Big-endian)和小端法(Little-endian) [注]首先不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址. 基本概念 高位放在低地址就是大端法

关于SimpleMsgPack中swap引发的问题大端法和小端法研究笔记

今天diocp裙中[珠海]-芒果反应了一个关于SimpleMsgPack的问题 msgPack.AsFloat = 2.507182; 经过编码再解码后,会直接触发异常. 因为msgPack的标准,在打包的数据是大端法IEEE 754 下面是msgPack的标准说明 Float format family stores a floating point number in 5 bytes or 9 bytes. float 32 stores a floating point number in

大端法、小端法、网络字节序 转

一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是Little Endian 的.少部分,如MAC OS ,是Big Endian 的. 所谓MSB (Most Significant Byte)就是,一个数字中,最重要的那位, 比如,12004,中文读作,一万两千零四,那最高位的1,就表示了一万,此处就称作MSB,最有意义的位. 而LSB (Least Significant Byte)与MSB相反,个位数4就可以称为LSB, 在草稿纸上演算的时候,我们习惯左边

关于字节序(大端法、小端法)的定义

<UNXI网络编程>定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址.小端存在起始地址,即是小端字节序:大端存在起始地址,即是大端字节序. 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端. 2.大端法(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端. 举个简单的例子,对于整形0x12345678.它在大端法和小端法的系统内中

网络通信之 字节序转换原理与网络字节序、大端和小端模式

原文地址:http://www.cnblogs.com/fuchongjundream/p/3914770.html 一.在进行网络通信时是否需要进行字节序转换? 相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换. 原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节.小端模式的多字节数据在存放时,低地址存放的是低字节,而被发送方网络协议函数发送时会首先去低地址取数据(想要取高字节,真正取得是低

网络通信时字节序转换原理与网络字节序、大端和小端模式

引言:在进行网络通信时是否需要进行字节序转换? 相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换. 原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节.小端模式的多字节数据在存放时,低地址存放的是低字节,而被发送方网络协议函数发送时会首先去低地址取数据(想要取高字节,真正取得是低字节),接收方网络协议函数接收时会将接收到的第一个字节存放到低地址(想要接收高字节,真正接收的是低字节),所以最后双

网络通信之字节序转换原理与网络字节序、大端和小端模式

一.在进行网络通信时是否需要进行字节序转换? 相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换. 原因如下:网络协议规定接收到得第一个字节是高字节,存放到低地址,所以发送时会首先去低地址取数据的高字节.小 端模式的多字节数据在存放时,低地址存放的是低字节,而被发送方网络协议函数发送时会首先去低地址取数据(想要取高字节,真正取得是低字节),接收方网络 协议函数接收时会将接收到的第一个字节存放到低地址(想要接收高字节,真正接收的是低字节),所以最后

【网络编程系列】一:字节顺序的大端与小端表示法

一.字节序 字节序,也就是字节的顺序,指的是多字节的数据在内存中的存放顺序. 在几乎所有的机器上,多字节对象都被存储为连续的字节序列.例如:如果C/C++中的一个int型变量 a 的起始地址是&a = 0x100,那么 a 的四个字节将被存储在存储器的0x100, 0x101,0x102, 0x103位置. 根据整数 a 在连续的 4 byte 内存中的存储顺序,字节序被分为大端序(Big Endian) 与 小端序(Little Endian)两类. 然后就牵涉出两大CPU派系: Motoro

大端小端法

不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址. 若首先取高字节的数据存放在低地址,则是大端法 若首先去低字节的数据存放在低地址,则是小端法 即是,高字节(大)在低地址叫大端法,低字节(小)在低地址叫小端法 参考:http://blog.csdn.net/zuyi532/article/details/8020712