C语言教程:结构体与共用体详解

需积分: 9 2 下载量 62 浏览量 更新于2024-07-28 收藏 279KB DOC 举报
"谭浩强C语言教程详细介绍了结构体与共用体的使用,包括结构体的定义、变量的声明、赋值、初始化、结构数组、结构指针以及动态存储分配等内容。教程还涵盖了枚举类型和typedef的用法,并以学生登记表为例解释了结构体在实际问题中的应用。" 在C语言中,结构体是一种复合数据类型,允许我们将不同数据类型的变量组合在一起,形成一个新的数据类型。结构体的定义通过`struct`关键字完成,结构体名后接一对花括号,其中包含成员列表,每个成员都有自己的数据类型和名称。例如,定义一个表示学生的结构体`stu`,包含整型的学号`num`、字符数组的名字`name`、字符型的性别`sex`和浮点型的成绩`score`。 结构体变量的声明有多种方式,可以直接声明结构体变量,如`struct stu s1;`,也可以先声明结构体类型,再声明变量,如`typedef struct stu Student;`然后`Student s1;`。结构体变量的赋值和初始化可以通过点运算符`.`来访问和设置成员,如`s1.num = 100;`。初始化时可以在声明时直接赋值,如`struct stu s1 = {100, "张三", 'M', 90.5};`。 结构数组的定义允许创建多个结构体变量,例如`struct stu students[10];`。结构指针可以用于高效地访问和操作结构体,比如`struct stu *p = &s1;`,通过指针可以访问结构体的各个成员,如`(*p).num`。 动态存储分配在C语言中使用`malloc()`函数实现,可以为结构体变量分配内存,如`struct stu *p = (struct stu *)malloc(sizeof(struct stu));`,使用完后记得用`free()`释放内存。 枚举类型(enum)是另一种自定义类型,用于定义一组符号常量,如`enum Gender {Male, Female};`,枚举变量可以赋值为这些符号,如`enum Gender g = Male;`。 类型定义符`typedef`可以用来给已存在的类型起一个新的名字,方便代码阅读和理解,如`typedef struct stu Student;`,这样可以用`Student`代替`struct stu`。 链表是基于结构体的一种重要数据结构,通过结构体指针链接多个结构体节点,实现动态存储和高效查找。 谭浩强C语言教程中的这部分内容深入浅出地讲解了C语言中结构体与共用体的概念和使用技巧,是学习C语言数据结构和程序设计的重要参考资料。