第十一章结构体与共用体 11.1概述 数据的基本类型:整型、实型、字符型等 构造类型:数组 如何描述一个学生的基本信息? 学号,名称,性别,年龄,成绩,地址
第十一章 结构体与共用体 11.1 概 述 数据的基本类型:整型、实型、字符型等 构造类型:数组 如何描述一个学生的基本信息? 学号,名称,性别,年龄,成绩,地址
C语言提供了这样一种数据结构:结构体( structure) 它相当于“记录”。 num name sex age score addr 10010 LiFun M 1887. 5 Beijing 例如: struct student fint num char name [20] char sex int age; float score char addr[30]
C语言提供了这样一种数据结构:结构体(structure) 它相当于“记录” 。 num name sex age score addr 10010 LiFun M 18 87.5 Beijing 例如: struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; };
定义一个结构体类型的一般形式为: struct结构体名 成员表列 “成员表列”对各成员都应进行类型说明,即: 类型标识符成员名; 也可以把“成员表列”称为“域表”,每一个成员 称为结构体中的一个域
定义一个结构体类型的一般形式为: struct 结构体名 { 成员表列 }; “成员表列”对各成员都应进行类型说明,即: 类型标识符 成员名; 也可以把“成员表列”称为“域表” ,每一个成员 称为结构体中的一个域
11.2定义结构体类型变量的方法 要定义一个结构体类型的变量,可以采取以 下三种方法。 先定义结构体类型再定义变量名 如已定义结构体类型 struct student,可以 用它来定义变量: struct student student1 student2
11.2 定义结构体类型变量的方法 要定义一个结构体类型的变量,可以采取以 下三种方法。 一、先定义结构体类型再定义变量名 如已定义结构体类型struct student,可以 用它来定义变量: struct student student1,student2;
为了使用方便,人们通常用一个符号常量代表一个结构 体类型。在程序开头,用 # define stud struct student-预处理命令 在程序中,STUD与 struct student完全等效 STUD fint num char name [20] char sex: int age; float score char addr [30] 可以直接用STUD定义变量 STUD student1 student2
为了使用方便,人们通常用一个符号常量代表一个结构 体类型。在程序开头,用 #define STUD struct student -预处理命令 在程序中,STUD与struct student完全等效。 STUD {int num; char name[20]; char sex; int age; float score; char addr[30]; }; 可以直接用STUD定义变量: STUD student1,student2;
在定义类型的同时定义变量 例如: struct student lint num char name [20] char sex int age, float score char addr[301 student 1. student2 既定义了类型,又定义了两个 struct studen类型的 变量 student1, student2
二、在定义类型的同时定义变量 例如:struct student {int num; char name[20]; char sex; int age; float score; char addr[30]; } student1,student2; 既定义了类型,又定义了两个struct student类型的 变量student1,student2
三、直接定义结构类型变量 其一般形式为: struct 无结构体名 成员表列 变量名表列;
三、直接定义结构类型变量 其一般形式为: struct --无结构体名 { 成员表列 } 变量名表列;
关于结构体类型,有几点要说明: 类型与变量是不同的概念: 只能对变量赋值、存取或运算,而不能对类型赋值、 存取或运算。 在编译时,对类型是不分配空间的,只对变量分 配空间。 2.对结构体中的成员(即“域”),可以单独使用, 它的作用与地位相当于普通变量; strcpy(student name, "zhang) 3.成员名可以与程序中的变量名相同;
关于结构体类型,有几点要说明: 1.类型与变量是不同的概念: 只能对变量赋值、存取或运算,而不能对类型赋值、 存取或运算。 在编译时,对类型是不分配空间的,只对变量分 配空间。 2. 对结构体中的成员(即“域”),可以单独使用, 它的作用与地位相当于普通变量; strcpy(student1.name,”zhang”) 3. 成员名可以与程序中的变量名相同;
4.成员也可以是一个结构体变量。 如: struct date I int month int day; int year: y struct student I int num char name[20] char sex int age; struct date birthday; char addr[3 0] 6 student1, student2 说明:先定义一个结构体date类型,它代表“日 期”,包括三个成员
4.成员也可以是一个结构体变量。 如:struct date { int month; int day; int year; }; struct student { int num; char name[20]; char sex; int age; struct date birthday; char addr[30]; }student1,student2; 说明:先定义一个结构体date类型,它代表“日 期”,包括三个成员
11.3结构体类型变量的引用 引用方式:结构体变量名.成员名 student num=10010: 注:“·〃"是成员(分量)运算符,它在所有的运算 符中优先级最高。 引用结构体变量应遵守以下规则: 1、不能将一个结构体变量作为一个整体进行 输入和输出。 printf(m%d, %s, %c, %d, %f, %s\n,", student1) 只能对结构体变量中的各个成员分别输出
11.3 结构体类型变量的引用 引用方式: 结构体变量名.成员名 student.num=10010; 注:“·”是成员(分量)运算符,它在所有的运算 符中优先级最高。 引用结构体变量应遵守以下规则: 1、不能将一个结构体变量作为一个整体进行 输入和输出。 printf(”%d,%s,%c,%d,%f,%s\n,”,student1); 只能对结构体变量中的各个成员分别输出