c语言复习之结构体、联合、枚举(十二)

简介: c语言复习之结构体、联合、枚举(十二)

目录

1.概念定义

1.概念

2.定义

2.变量的初始化与访问

1.初始化

2.访问

3.结构体嵌套

4.面向对象

5.结构体数组

6.结构体字节对齐

1.优点

2.规则

7.位段

1.概念

2.定义

3.位段各部分解释

1.位段名

2.整数类型

3.位段大小

4.注

8.联合

9.枚举

1.概念

2.定义

1.概念定义

1.概念

把同一个对象的不同属性,包装在一起,形成一个结构

2.定义

typedef struct student

{

   unsiged long long stuno;

   char name[20];

   char age;

} student;

2.变量的初始化与访问

1.初始化

student maya={0};//全部初始化为0

maya={.name="dsaf",.age=15,.stuno=2316465456};

2.访问

  1. 普通变量用**.**访问
  2. 指针变量用**->**访问

3.结构体嵌套

//定义一个人的结构,包含姓名,电话,出生日期(年月日)

typedef struct Data

{

   short year;

   short month;

   short day;

}Data;

typedef struct

{

   char name[20];

   unsigned long long tel;

   Data birth;

}person;

//初始化

person maya={"zhangsan",177465489,{1990,5,04}};//年月日外面最好加上花括号

//也可以直接把第一个结构体放入第二个中,去掉typedef

4.面向对象

是一种思想,不是什么语言独有的

  1. 封装:结构体封装
  2. 继承:结构体嵌套
  3. 多态:结构体+指针

5.结构体数组

typedef struct student

{

   int number;

   char name[20];

   char gender[3];

}student;

student stus[49];

6.结构体字节对齐

1.优点

  1. 提高存取数据的速度
  2. 访问特定类型变量要在特定地访问

2.规则

  1. 结构体的大小必须是最宽的基本数据成员的整数倍
  2. 结构体每个成员相当于结构体的首地址的偏移量都是成员大小的整数倍,如果需要,编译器会在成员之间加上填充字节

7.位段

1.概念

在结构体中以位为单位来指定其他成员所占内存长度,这种以位为单位的成员称为位段,利用位段能够用较少的位数存储数据

2.定义

struct Data

{

   整数类型 位段名:位段大小;

   unsigned int year:12;

   unsigned int month:4;

   unsigned int day:5;

}birth;

3.位段各部分解释

1.位段名

即有效的标识符


2.整数类型

c语言标准规定,只有有限的几种数据类型可以用于位段——> 所有的整数类型以及char类型和bool类型


3.位段大小

此位段所占得位数不能超过类型的最大位数


4.注

不能对位段取地址

内存排布:先定义的放到高地址,后定义的放到低地址

8.联合

联合成员共享同一个内存位置,联合中所有成员都是从相同的内存地址开始,但是同一时刻只能有一个成员允许含有一个值,小端模式存储


把struct换成union


9.枚举

1.概念

定义符号常量,用一些符号来表示常量,有些变量的取值范围是有限的—–》星期7天,年12月等等

2.定义

enum arr

{

   space;//自动初始化为0,kill为1

   kill;

}

//可以赋值spcace=56,则kill为57

枚举可以赋值给整型变量,反过来也可以

int a=kill;

————————————————

版权声明:本文为CSDN博主「热爱编程的小K」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_72157449/article/details/128389987

相关文章
|
26天前
|
存储 C语言
如何在 C 语言中实现结构体的深拷贝
在C语言中实现结构体的深拷贝,需要手动分配内存并逐个复制成员变量,确保新结构体与原结构体完全独立,避免浅拷贝导致的数据共享问题。具体方法包括使用 `malloc` 分配内存和 `memcpy` 或手动赋值。
34 10
|
25天前
|
存储 大数据 编译器
C语言:结构体对齐规则
C语言中,结构体对齐规则是指编译器为了提高数据访问效率,会根据成员变量的类型对结构体中的成员进行内存对齐。通常遵循编译器默认的对齐方式或使用特定的对齐指令来优化结构体布局,以减少内存浪费并提升性能。
|
30天前
|
编译器 C语言
共用体和结构体在 C 语言中的优先级是怎样的
在C语言中,共用体(union)和结构体(struct)的优先级相同,它们都是用户自定义的数据类型,用于组合不同类型的数据。但是,共用体中的所有成员共享同一段内存,而结构体中的成员各自占用独立的内存空间。
|
30天前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
1月前
|
编译器 C语言 C++
C语言结构体
C语言结构体
27 5
|
1月前
|
存储 编译器 C语言
c语言回顾-联合和枚举
c语言回顾-联合和枚举
30 4
|
1月前
|
存储 C语言 C++
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
|
1月前
|
编译器 Linux C语言
C语言 之 结构体超详细总结
C语言 之 结构体超详细总结
20 0
|
1月前
|
存储 编译器 Linux
深入C语言:探索结构体的奥秘
深入C语言:探索结构体的奥秘
|
1月前
|
存储 编译器 C语言
c语言回顾-结构体(2)(下)
c语言回顾-结构体(2)(下)
30 0