首页 > 知识点讲解
       结构体、位域和共用体
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C程序设计基础 > C程序基础 > 
被考次数:5次     被考频率:中频率     总体答错率:59%     知识难度系数:     
相关知识点:27个      
        结构体、位域和共用体类型在程序中需要用户进行定义,同时用typedef定义数据类型的别名。
               结构体
               利用结构体类型可以把一个数据元素的各个不同的数据项聚合为一个整体。结构体类型的声明格式为:
               
               例如,一个复数z=x+yi包含了实部x和虚部y两部分(x和y为实数),可以定义一个表示复数的结构体类型,并用typedef为结构体类型命名为Complex:
               
               在该定义中,Complex是这个结构体类型的名字,re和im是结构的成员。一般情况下,对结构体变量的运算必须通过对其成员进行运算来完成,成员运算符“.”用来访问结构体变量的成员,方式为:
               
               例如,定义结构体变量z,将-4和5分别赋值给一个复数z的实部成员变量和虚部成员变量:
               
               z.re和z.im相当于普通的double型变量。结构体外的变量名和结构体中的成员名相同时不会发生冲突。一个结构体变量的存储空间长度不少于其所有成员所占空间长度之和。
               结构体数据的空间中可能产生填充信息,因为对大多数处理器而言,访问按字或者半字对齐的数据速度更快,当定义结构体时,编译器为了性能优化,可能会将它们按照半字或字对齐。
               例如,下面两个结构体变量structA和structB的成员相同但排列顺序不同,用sizeof计算其所占用存储空间的字节数,sizeof(structA)的值为8,sizeof(structB)的值为12。其存储空间中的填充处理如下图所示。
               
               结构体变量的存储空间
               位域
               有些信息在存储时只需要一个或几个二进制位,而不是完整的字节空间,这时可通过位域的方式来处理,即将一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。
               位域的定义格式如下:
               
               其中,位域列表的形式为:类型说明符位域名:位域长度。
               例如,定义了下面的位域结构变量bit后,可以为其位域赋值:
               
               共用体
               共用体类型的声明格式为:
               
               例如,定义共用体类型DATA及其变量a。
               
               不能直接引用联合类型的变量,只能引用其成员。用“.”运算符引用共用体变量的成员,引用方式为:
               
               例如,a.i,a.ch,a.f
               一个共用体变量的存储空间的大小等于其占用空间最大的成员的大小,所有成员变量占用同一段内存空间,如下图所示。
               
               共用体变量a的存储空间
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有