从给定的文件信息来看,主要讨论了C语言中的结构体(struct)与共用体(union)的概念、定义、初始化以及使用方式。下面将详细解释这些知识点。 ### 结构体(struct) #### 定义 结构体是C语言中一种复合数据类型,允许你将不同类型的数据组合成一个整体。例如,在描述一个人时,可以使用结构体来存储其姓名、年龄和成绩等信息。 ```c struct std { int num; char name[10]; float sco; }; ``` 这里的`struct std`定义了一个结构体类型`std`,它包含三个成员:整型变量`num`、字符数组`name`和浮点型变量`sco`。 #### 声明与初始化 结构体变量可以通过以下几种方式进行声明: - 直接声明结构体类型并初始化成员。 - 在声明结构体类型的同时声明变量。 - 直接声明结构体变量而省略类型关键字`struct`。 ```c // 直接声明并初始化 struct std stu1 = {1, "Tom", 95.5}; // 在声明类型时声明变量 struct std { int num; char name[10]; float sco; } stu2; // 省略类型关键字 struct { int num; char name[10]; float sco; } stu3; ``` #### 成员访问 结构体成员可以通过`.`操作符进行访问: ```c stu1.sco; // 访问stu1的sco成员 stu1.name[0]; // 访问stu1的name数组的第一个元素 ``` #### 结构体指针 可以定义指向结构体的指针,并通过指针访问结构体成员: ```c struct std *ptr; ptr = &stu1; (*ptr).sco; // 或者 ptr->sco; ``` ### 共用体(union) #### 定义 共用体也是C语言中的复合数据类型,但它与结构体不同的是,共用体的所有成员共享同一段内存。这意味着,在任意时刻,共用体只能保存其中的一个成员值。 ```c union unit { int class; char office[10]; }; ``` #### 内存分配 共用体占用的内存空间是所有成员中最大成员所占空间的大小。例如,上述共用体`unit`占用的空间为10个字节(假设`char`占用1字节),因为`char office[10]`是最大的成员。 #### 成员访问 共用体成员的访问方式与结构体相同,使用`.`操作符: ```c union unit un; un.class = 100; un.office[0] = 'A'; ``` ### 枚举(enum) 枚举是一种用户自定义的整型数据类型,用于定义一组命名常量。每个枚举值默认从0开始,依次递增1。 ```c enum color { RED, GREEN, BLUE }; ``` #### 类型定义 `typedef`关键字可以用于创建新的类型名,简化代码编写: ```c typedef int INTEGER; INTEGER a, b; // 等价于 int a, b; ``` 通过上述知识点的详细解释,我们可以看出结构体和共用体在C语言中的重要性和灵活性,它们提供了构建复杂数据类型的能力,使得程序设计更加高效和直观。同时,枚举和类型定义也增强了代码的可读性和可维护性。掌握这些基础概念对于深入学习C语言至关重要。
本章主要考查结构体类型、结构体变量、结构体数组、结构体指针的定义和引用方法,结构体类型变量的特点,以及共用体及枚举类型的概念、定义和引用,并掌握己有类型定义别名的方法。
一、考试要点
1、结构体
(1)结构体类型的定义
结构是一种“构造”而成的数据类型,在使用之前必须先定义,然后才可能用来定义相应的变量、数组等。定义如下:
struct 结构名
{
成员列表;
};
例如:
struct std
{
int num;
char name[10];
float sco;
};
定义的该结构类型之后,这种类型在内存中所占间为所有成员所占内存之和。
(2)结构类型的说明
说明结构体变量有以下3种方法:
方法一:先定义结构体,再说明结构体变量
struct std
{
int num;
char name[10];
float sco;
};
struct std stu1,stu2;
方法二:在定义结构体的同时说明结构体变量
struct std
int num;
char name[10];
float sco;
}stu1,stu2;
方法三:直接说明结构变量
struct
{
int num;
char name[10];
float sco;
}stu1,stu2;
(3)结构变量的引用
结构变量成员的表示一般形式为:
结构变量名.成员名
如:stu1.sco
若成员本身又是一个结构,则必须逐级找到最低级的成员才可以使用,一般形式为:
外层结构变量.外层成员名.内层成员名
如:stu1.birth.year
(4)结构变量和赋值和初始化
结构变量的赋值即是给各个成赋值,可用输入输出语句来实现。
结构变量的初始化是指在结构变量说明的同时,给它的各个成员赋初值,初始化的格式为:
struct 结构名
{结构成员列表;}
结构变量={初始数据表};
(5)结构指针变量的说明和使用
结构指针的说明形式为:
struct 结构名 * 结构指针变量名
结构指针变量访问结构变量各个成员的一般形式为:
(*结构指针变量).成员名
剩余6页未读,继续阅读
- 粉丝: 2
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Arduino和Python的实时歌曲信息液晶显示屏展示系统.zip
- (源码)基于C++和C混合模式的操作系统开发项目.zip
- (源码)基于Arduino的全球天气监控系统.zip
- OpenCVForUnity2.6.0.unitypackage
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件