结构体 共用体

一.结构体

语法:

1.struct结构体名

{

成员列表:

};

(1) struct 关键字 
    表示 是在构造一个结构体的类型 
(2) 结构体名    
    用来 描述 结构体这个类型 一个名称 
(3) 成员列表 
    表示 要描述的复杂数据 中用到的 具体的成员变量
    定义的方式,与之前变量的方式相同
    多个成员变量之间,用分号隔开。
(4) 最后 有一个 分号 表示 结束

例如: 定义一个学生的结构体;

注意:结构体类型的使用的过程 
    (1)先定义出类型
    (2)定义变量
  

2.结构体初始化

初始化:
  (1)看每个成员变量,具体是什么数据类型。
  (2)根据 各个成员变量 自身的数据类型,进行初始化。
  (3)初始化的顺序,按照定义的顺序,依次初始化

例如:

输出3个学生信息:

3.结构体类型的定义形式:

(1) 先定义类型,然后定义变量 
struct demo
{

}; 
struct demo d;

(2) 定义类型的同时,定义变量 
struct demo
{
}d; 

(3) 定义类型的同时,定义变量,可以省略 结构体名  
struct 
{

}d;

4.结构体类型的大小:

在 C 语言中,结构体的大小由结构体中各成员的大小以及对齐要求决定。结构体的大小可以通过 sizeof 运算符来获取。以下是一些重要的考虑因素:
(1)成员大小:结构体的每个成员占用一定的字节数。例如,int 通常占用 4 字节,char 占用 1 字节,float 通常占用 4 字节。
(2)对齐要求:为了提高性能,编译器通常会将结构体的成员按照特定的对齐要求排列。这可能会导致结构体中存在填充字节,使得实际占用的内存比单纯的成员大小总和要大。
示例:

struct Person 的大小取决于 char[50]、int 和 float 的大小,以及它们的对齐要求。可能会有填充字节来满足对齐要求。
(3)对齐和填充:如果结构体中有不同类型的成员,编译器会在每个成员之间插入填充字节,使得每个成员都按其对齐要求对齐。比如在某些系统上,int 可能需要在 4 字节边界对齐,float 也是如此,因此在 char 和 int 之间可能会插入 3 字节的填充。
(4)同类型的结构体变量之间 ,可以相互赋值 
struct student s1;
struct student s2;
s2 = s1; 

二.共同体


   union  
语法:
  union 共用体名
  {
     成员变量;
  };
   
  共用体:
       (1)共用了一块内存空间 
       (2)公用了最大成员的空间 
       
  注意:
  1.共用体初始化时,只能给一个值,默认时给到第一个成员的。
  2.共用体变量中的值,取决与最后一次给到的值,还要看能影响几个字节。
  
  对比 结构体
  1.结构体中各个成员 拥有自己独立空间
  2.共用体中,成员共用一块空间

//共同体:

//结构体:


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值