C语言之位段

1.位段的声明
位段的声明和结构是类似的,有两个不同:
1.位段的成员必须是 int、unsigned int 或signed int 。
2.位段的成员名后边有一个冒号和一个数字。
比如:
struct A
{
        int _a:2;
        int _b:5;
        int _c:10;
        int _d:30;
};
A 就是一个位段类型。
那位段 A 的大小是多少?(以64位机器为例)
printf ( "%d\n" , sizeof ( struct A ));

 

为什么不是(2+5+10+30)/  8 = 7  呢?下面我们了解一下位段的内存分配。

2.位段的内存分配
1. 位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型
2. 位段的空间上是按照需要以8个字节( int )或者1个字节( char )的方式来开辟的。
3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。

下面举一个例子(来了解对应内存的分配):

struct S
{
	char a : 3;
	char b : 4;
	char c : 5;
	char d : 4;
};


int main()
{
	struct S s = { 0 };
	s.a = 10;
	s.b = 12;
	s.c = 3;
	s.d = 4;
	printf("%d\n", sizeof(struct S));
	return 0;
}

 输出结果:

内存角度:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/507924.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云服务器安装SSL证书不起作用的解决方案

阿里云服务器安装SSL证书不起作用的解决方案 在阿里云安装SSL证书后,访问无效,各种检查证书安装没有问题。忽然想到阿里云默认连80端口都没开启,443端口应该也没开启。 登录阿里云控制台 - 云服务器 ECS - 网络与安全 - 安全组 - 管理规则 - …

【Redis】Redis 内存管理,Redis事务,bigkey和hotkey

目录 Redis 内存管理 缓存数据设置过期时间? Redis 是如何判断数据是否过期的呢? 过期删除策略 内存淘汰机制 主从模式下对过期键的处理? LRU和LFU的区别 Redis事务 定义和原理 Redis 事务的注意点? 为什么不支持回滚&a…

C++析构函数

当对象的生存期结束时,系统就会自动执行析构函数清除其数据成员所分配的内存空间。 析构函数的定义格式为: ~类名();//没有返回值,没有参数 注: (1)析构函数名是由“~”加类名组成的。 (2&#…

[HackMyVM]靶场Flossy

难度:Medium kali:192.168.56.104 靶机:192.168.56.142 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.142 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-01 21:01 CST Nmap scan report for 192.168.56.142 Host is up (0.00018s latency).…

linux shell命令(进程管理、用户管理)

一、进程的概念 主要有两点: 1.进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)…

ASCII编码的全面介绍

title: ASCII编码的全面介绍 date: 2024/4/1 20:05:52 updated: 2024/4/1 20:05:52 tags: ASCII定义编码原理编码表结构扩展编码应用场景优势与局限安全考量 1. ASCII编码的定义和历史 ASCII(American Standard Code for Information Interchange)是一…

Linux安装JDK及配置环境变量保姆级教程

文章目录 前言一、JDK下载一、Linux安装JDK及配置环境变量1.创建JDK的安装目录2.上传下载好的JDK安装包3.解压缩4.配置环境变量(根据自己jdk的实际安装位置进行配置)5.加载配置文件6.查看java版本(此时jdk就已将安装完成) 前言 JD…

基于SSM+Jsp+Mysql的固定资产管理系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

嵌入式网络硬件方案

一. 简介 本文来了解一下嵌入式有些网络中,涉及的网络硬件方案。 注意:本文说明的是有些网络。 提起网络,我们一般想到的硬件就是“网卡”,“网卡”这个概念最早从电脑领域传出来,顾名思义就是能上网的卡。在电脑领…

UE4_动画基础_ 瞄准偏移1D(Aim Offset Blend Space 1D)

瞄准偏移1D基本上可以完成角色的向左看向右看或者向上看向下看,像混合空间1D一样只有一个轴向可用。 操作步骤: 1、新建第三人称模板项目。 2、右键——动画——瞄准偏移1D 选取骨骼 双击打开 3、瞄准偏移混合的是姿势,我们需要创建姿势。 …

ALPHA开发板上PHY网络芯片LAN8720

一. 简介 正点原子的开发板 ALPHA开发板,有线网络硬件方案所使用的也是最常用的一种方案,IMX6ULL芯片内部是自带 MAC网络芯片的,所以,也就是采用 "SOC内部集成网络MAC外设 PHY网络芯片方案"。 ALPHA开发板使用的PHY网…

编程新手必看,Pycham开发工具使用及项目创建(3)

介绍:PyCharm是一款由JetBrains开发的专业Python集成开发环境(IDE)。 PyCharm为Python开发者提供了一整套工具,以提高编程效率和改善代码质量。以下是其主要特点和功能: 代码编辑与智能提示:具备高级代码编…

Java 堆外内存及调优

文章目录 直接内存简介为什么DirectByteBuffer可以优化 IO 性能 直接内存的分配直接内存的回收直接内存跟踪与诊断 直接内存简介 直接内存(Direct Memory) 并不是虚拟机运行时数据区的一部分,并非Java虚拟机规范中定义的内存区域。但是这部分内存的频繁使用&#x…

Vue.js高效前端开发(增删查)

效果图 代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div id"app"><span>ID</span><input type"text" name"…

javaWeb项目-家政服务管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、B/S结构简介 B/S…

unity学习(80)--disposed object

1.在正常运行的过程中&#xff0c;客户端崩溃&#xff0c;原因就是某个对象null或者被disposed了 2.找了找&#xff0c;发现socket确实调用过一次close 3.把close去掉修改为如下&#xff0c;客户端不再崩溃&#xff0c;虽然还有异常。

如何快速生成视频二维吗?视频用二维码播放的方法

视频的二维码如何制作会更加简单呢&#xff1f;通过扫码播放视频的方式现在越来越多&#xff0c;很多小伙伴也喜欢用这种方式来将视频分享给其他人。将视频储存到云端储存之后&#xff0c;通过扫描二维码在手机上浏览器视频&#xff0c;更加的方便快捷。 现在视频生成二维码可…

什么是ISP住宅IP?相比于普通IP它的优势是什么?

什么是ISP住宅IP&#xff1f; ISP住宅IP是指由互联网服务提供商&#xff08;ISP&#xff09;分配给住宅用户的IP地址。它是用户在家庭网络环境中连接互联网的标识符&#xff0c;通常用于上网浏览、数据传输等活动。ISP住宅IP可以是动态分配的&#xff0c;即每次连接时都可能会…

红酒:从新世界到旧世界,红酒产区的分类与发展

红酒产区的分类与发展是葡萄酒产业中一个重要的话题。从新世界到旧世界&#xff0c;各个产区的风格和特点都有所不同&#xff0c;也在不断发展和演变。 新世界产区包括美国、澳大利亚、新西兰、智利、阿根廷、南非等新兴葡萄酒生产国。这些国家在葡萄酒产业方面相对较新&#…

【前端】FreeMarker学习笔记

文章目录 1. 介绍2.FreeMarker环境搭建(maven版本)3. 语法3.1 freemarker的数据类型3.1.1 布尔类型3.1.2 日期类型 FreeMarker视频教程 1. 介绍 中文官网 英文官网 FreeMarker 是一款 模板引擎&#xff1a; 即一种基于模板和要改变的数据&#xff0c; 并用来生成输出文本(HTML…