首页 > 其他分享 >C语言——共用体union存储结构与大小端存储模式

C语言——共用体union存储结构与大小端存储模式

时间:2023-11-13 15:59:15浏览次数:31  
标签:存储 union 00000000 value C语言 int 地址

1、大小端存储模式

大端:低位数据字节存储在高地址

小端:低位数据字节存储在低地址

注释:例如int的权重低的8bit,低位指的是00000001

00000000 00000000 00000000 00000001

2、共用体union存储结构

共用体内每段数据元素从低地址开始存储。

注释:数组的每个元素的地址随着索引的增大而增大。

例如:

    union {
        char b[2];
        int a;
    } value;
    printf("pa: %p\n", &value.a);
    printf("pb1: %p\n", &value.b[1]);
    printf("pb0: %p\n", &value.b[0]);
    value.a = 1;
    printf("a: %d\n", value.a);
    printf("b1: %d\n", value.b[1]);
    printf("b0: %d\n", value.b[0]);

运行结果:

pa: 0061FF1C
pb1: 0061FF1D
pb0: 0061FF1C
a: 1
b1: 0
b0: 1

3、通过union判断设备的数据存储方式

(1)无论什么数据类型在union中的存储方式都是先存低地址再存高地址,所以对int和char[0]取地址得到的值一定是一致的。

(2)因为共用体内每段数据元素从低地址开始存储,同时数组的每个元素的地址随着索引的增大而增大。据以上所说,char类型数组的第一个元素一定在union的最低地址。

(3)此时对int赋值,如果char[0]的值与int低八位的值相等,则表示int的低八位存储在低地址位置。

低地址-------------------------高地址
00000001 00000000 00000000 00000000 —— int
00000001                            —— char
int == 1
小端存储

 

标签:存储,union,00000000,value,C语言,int,地址
From: https://www.cnblogs.com/GREEN-FIEID/p/17829207.html

相关文章

  • Ubuntu+Minio对象存储+pm2进程管理
    Minio是一个go编写的高性能对象存储服务,它兼容AmazonS3API。无论是静态网站的托管,还是数据存储分析,亦或是数据的备份与恢复等多种场景下,都可以为我们提供解决方案。ubuntu安装Minio对象存储服务:1.打开终端,并执行以下命令下载Minio文件。可以从Minio的官方网站获取最新的下载......
  • 3分钟白话RocketMQ系列—— 如何存储消息
    白话3分钟,快速了解RocketMQ如何存储消息。看完如果不了解,欢迎来打我。我们知道RocketMQ主要分为消息生产、存储(消息堆积)、消费三大块领域。那接下来,我们白话一下,RocketMQ是如何存储消息的,揭秘消息存储全过程。注意,如果白话中不小心提到相关代码配置与类名,请参考RocketMQ4.9.4......
  • 升讯威在线客服系统的并发高性能数据处理技术:高性能OSS文件存储
    我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消......
  • C语言感恩程序代码
    以下是一个基于C语言的简单感恩程序代码,通过打印特定的字符画和文字,表达对生活中各种值得感恩的事物的感激之情:#include<stdio.h>intmain(){printf("\n");printf("\n");printf("________________.\n");printf("......
  • Filebeat采集通用基于S3协议的对象存储作为输入源
    一背景随着云计算和大数据技术的快速发展,越来越多的组织和企业选择将数据存储在云端的对象存储服务中。对象存储服务提供了高可靠性、可扩展性和低成本的存储解决方案,因此成为了许多应用场景的首选。S3(SimpleStorageService)是亚马逊AWS提供的一种对象存储服务,许多云厂商也提供了......
  • 数据存储和检索:B-tree 和 LSM-tree
     本文主要介绍数据库的核心数据结构索引的实现方式:B+tree和LSM-tree。实际上,数据库是可以不存在索引结构的,遍历数据库总归可以实现数据库的查询,但是,如果数据量很大,这种低效的做法是不可接受的,那么自然而然,牺牲部分空间换取时间被提出和接受,即保留额外的元数据,实现数据......
  • 2023-2024-1 20231407陈原《计算机科学与概论》与《C语言程序设计》第七周学习总结
    这个作业属于哪里?2023-2024计算机基础与程序设计作业要求是什么?https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07作业目的是什么计算机科学概论第8章《C语言程序设计》第6章作业正文  https://www.cnblogs.com/CCCY12345/p/17827874.html学习了程序中......
  • C语言入门基础知识
    C语言的概念C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令**集成开发环境(IDE)**用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、调试功能等一体化的开发软件服务......
  • C语言程序设计教程入门p2.
    1字符串(abc)申请空间chararr1[]=""chararr1[]="abc";//数组chararr2[]={'a','b','c'};arr1比arr2多个/0字符串结束标志打印字符串%s2计算字符串长度使用strlen使用前加<cstring>#include<cstring>printf("%d\n",strlen(arr1));3转义字......
  • innodb存储引擎了解
    mysql常用的存储引擎分为innodb和myisam其中innodb具有支持事务,执行行级锁,支持MVCC,外键,自动增长列,崩溃恢复等特性。并且mysql在5.5.5之后是数据的默认存储引擎文件:mysql的数据都存放的data文件中,其中日志文件包括错误日志,慢查询日志,查询日志还有二进制日志慢查询日志默认时间......