C语言结构体:定义与引用详解

需积分: 14 0 下载量 171 浏览量 更新于2024-07-14 收藏 705KB PPT 举报
"C语言中的结构体是一种复合数据类型,允许我们将不同类型的数据组合在一起形成一个新的数据类型。在C语言中,我们可以通过结构体来定义复杂的数据结构,如学生信息、员工记录等。本资料主要讲解了如何定义和使用结构体变量,以及结构体在数组、指针和函数中的应用。此外,还涉及了共用体和枚举类型的概念,以及typedef语句的使用。" 在C语言中,结构体的定义通常分为两个步骤:首先定义结构体类型,然后定义结构体变量。例如: ```c struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }; ``` 在这个例子中,`struct student`定义了一个新的数据类型,包含了整型变量`num`、字符数组`name`、字符变量`sex`、整型变量`age`、浮点型变量`score`和字符数组`addr`。接下来,我们可以定义结构体变量,如`stu1`和`stu2`: ```c struct student stu1, stu2; ``` 结构体类型定义后,我们可以通过结构体变量名来访问其成员。例如,要访问`stu1`的学生编号,可以写成`stu1.num`。要注意,结构体变量不能被整体引用,只能引用其成员。结构体成员的引用采用点操作符`.`,如`stu1.name`表示访问`stu1`的名字。 结构体可以嵌套定义,即一个结构体的成员可以是另一个结构体类型。例如: ```c struct date { int month; int day; int year; }; struct student { int num; char name[20]; struct date birthday; }; ``` 在这种情况下,`student`结构体包含了一个`date`结构体作为成员,我们可以通过`stu1.birthday.month`来访问学生的出生月份。 结构体变量可以被赋值给其他结构体变量,实现数据的复制。但需要注意,这种赋值是浅拷贝,只复制了成员的值,而没有复制成员所指向的内存(如果有的话)。 在C语言中,`typedef`语句可以用来给已存在的类型或结构体类型起一个新的名字,简化类型声明。例如: ```c #define STUDENT struct student STUDENT { int num; char name[20]; char sex; int age; float score; char addr[30]; }; STUDENT stu1, stu2; ``` 这样,`STUDENT`就成为了`struct student`的别名,可以更方便地声明和使用结构体变量。 共用体(union)是另一种复合类型,它的一个变量可以存储不同类型的数据,但所有成员共享同一块内存空间。而枚举(enum)则是定义一组命名的整数常量。这些概念在特定场景下很有用,如节省内存或简化代码。 总结来说,C语言的结构体提供了一种强大的工具,让我们能够自定义复杂的数据结构,灵活地处理和组织数据。通过熟练掌握结构体、共用体和枚举类型,我们可以构建更高效、更具有表达力的C程序。