C语言结构体、联合与枚举详解及其应用

需积分: 15 0 下载量 170 浏览量 更新于2024-09-08 收藏 6KB TXT 举报
本篇笔记主要涵盖了C语言中的几个关键概念:结构体、联合体、枚举类型以及宏定义。首先,我们来看结构体(struct)部分。在C语言中,`struct student` 定义了一个学生数据类型,包含姓名(char array),年龄(int)和分数(int)。例如,`struct student jack` 和 `struct student rose` 分别表示一个叫Jack的学生实例和Rose的具体初始化,其中`.name`、`.score` 和 `.age` 是成员变量的访问方式。 接下来是`typedef`,它允许我们将结构体类型进行重新命名,如`typedef struct student STU`,这样可以直接使用`STU`代替`struct student`,同时`PSTU` 是结构体指针类型,用于指向`STU`类型的变量。`struct student <==> STU` 和 `struct student* <==> PSTU` 表明结构体与新类型的等价关系。 联合体(union)用于存储不同类型但相同大小的数据,如`union a`定义了一个可以存储字符(char),整数(int)或浮点数(float)的联合体。联合体中所有成员共享同一块内存空间,通过`union`关键字指定的变量名来访问不同的数据类型。 枚举(enum)用于定义一组命名的整数值,例如`enum weekday`定义了一个一周中的七天枚举,每个枚举值可以通过名称直接引用。在第二个示例中,枚举值进行了重新赋值,如`MON = 5`,这在计算时可以简化代码。`f()` 函数展示了递归的斐波那契数列算法,利用了递归调用的特点。 最后,宏定义(macro)是预处理器指令,`inline int f()`展示了如何创建一个内联函数,这种函数的调用相当于它的代码直接嵌入到调用者的地方,以提高执行效率。`inline int fun()` 是一个简单的例子,它计算两个整数的和,并返回结果。在实际编程中,需要注意内联函数的使用,以避免不必要的代码重复和性能开销。 此外,还提到了函数的输入参数验证和递归计算,以及在内存管理上的注意事项,强调了正确处理内存分配和释放的重要性。本篇笔记详细介绍了C语言中结构体、联合体、枚举和宏的使用,以及一些基本的编程技巧。