C语言重难点:大端小端(在一个64位的操作系统中定义如下结构体:)
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言重难点:大端小端(在一个64位的操作系统中定义如下结构体:)相关的知识,希望对你有一定的参考价值。
一:大端和小端
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中
二:经典问题
1:如何判断当前机器的字节序
2:下面的程序输出的是什么(64位操作系统)
#include <stdio.h>
struct task
{
uint16_t id;//2个字节
uint32_t value;//4个字节
uint64_t timestamp;//8个字节
};
int main()
{
struct task tas = {};
uint64_t a = 0x00010001;
memcpy(&tas, &a, sizeof(uint64_t));
printf("%11u,%11u,%11u", tas.id, tas.value, tas.timestamp);
}
根据内存对齐的原则,id,value和timestamp所组成的结构体为16个字节
接着对结构体进行初始化,全部为0
变量a的存储布局
memcpy函数用法如下
也就是从a的位置开始,向后复制16个字节
故结果为1 0 0
以上是关于C语言重难点:大端小端(在一个64位的操作系统中定义如下结构体:)的主要内容,如果未能解决你的问题,请参考以下文章