C语言教程:结构体与共用体 学习目的:将不同的类型和对象组 织成一个组合项,称之为“记录” 和结构体将不同类型的变量存放 到同一段内存单元中,可相互覆 盖,这种共同占用一段内存的结 构称为共用体
C语言教程:结构体与共用体 学习目的:将不同的类型和对象组 织成一个组合项,称之为“记录” 和结构体;将不同类型的变量存放 到同一段内存单元中,可相互覆 盖,这种共同占用一段内存的结 构称为共用体
结构体与共用体内容介绍 1结构体类型声明、结构体类型变量定义和引用 2结构体数组和指向结构体类型数据的指针 紫3链表 4共用体 5枚举类型 6用 typedef定义类型
结构体与共用体内容介绍 1 结构体类型声明、结构体类型变量定义和引用 2 结构体数组和指向结构体类型数据的指针 3 链表 4 共用体 5 枚举类型 6 用typdef定义类型
什么是结构体数据类型? ,种构造数据类型 ◆由不同数据类型成员构造而成 例如,学生构造体 struct stu Int num char name[] char sex float score
什么是结构体数据类型? 一种构造数据类型 由不同数据类型成员构造而成 例如,学生构造体 struct stu { int num; char name[20]; char sex; float score; };
定义一个结构的一般形式为: struct结构名 {成员表列 成员的定义形式为:类型说明符成 num Ox3000 员名; name Ox3002 分析如下定义:{ int num char name[201 Ux3015 char sex sex Ox3016 float score,) score Ux3017 结构类型名为: struct stu,可以象 nt;char,foat样用来定义变量的 0x301B 类型; 结构名:stu,几乎不单独使用 struct stu结构体类型在内存中的存 储结构
定义一个结构的一般形式为: struct 结构名 {成员表列}; 成员的定义形式为: 类型说明符 成 员名; 分析如下定义:{ int num; char name[20]; char sex; float score; }; 结构类型名为:struct stu,可以象 int,char,float一样用来定义变量的 类型; 结构名:stu,几乎不单独使用; struct stu结构体类型在内存中的存 储结构
结构类型变量的说明说明结构变量有以下三种方法 以上面定义的stu为例来加以说明。 1.先定义结构,再说明结构变量。如: struct stu Int num char name[20] char sex float score struct stu boy 1, boy2 说明了两个变量boy1和boy2为stu结构类型。也可以用 宏定义使一个符号常量来表示一个结构类型。例如: #define stu struct stu StU, int num; char name 201 char seX float score,) boy l, boy2
结构类型变量的说明说明结构变量有以下三种方法。 以上面定义的stu为例来加以说明。 1. 先定义结构,再说明结构变量。如: struct stu { int num; char name[20]; char sex; float score; }; struct stu boy1,boy2; 说明了两个变量boy1和boy2为stu结构类型。也可以用 宏定义使一个符号常量来表示一个结构类型。例如: #define STU struct stu STU { int num; char name[20]; char sex; float score; } boy1,boy2;
2.在定义结构类型的同时说明结构变量。例如: struct stu int num; __i char name [20 a char sex; float score; )boy l, boy2 这种形式的说明的一般形式为: struct结构名{成员表列}变量名表列; 3直接说明结构变量。例如: struct int num char name[20] char sex; float score; )boy 1, boy2 这种形式的说明的一般形式为: struct{成员表列}变量名表列
2. 在定义结构类型的同时说明结构变量。例如: struct stu{ int num; char name[20]; char sex; float score; }boy1,boy2; 这种形式的说明的一般形式为: struct 结构名 {成员表列 }变量名表列; 3.直接说明结构变量。例如: struct {int num; char name[20]; char sex; float score;}boy1,boy2; 这种形式的说明的一般形式为: struct {成员表列}变量名表列;
成员也可以又是一个结构,即构成了嵌套的结构。 例如 struct date struct( int num f int month; char name 201 int day cha char sex Int year uct date birthday float score; ) boyl, boy2 numl name sex birthday score month day year
成员也可以又是一个结构,即构成了嵌套的结构。 例如 : struct date { int month; int day; int year; }; struct{ int num; char name[20]; char sex; struct date birthday; float score; }boy1,boy2;
结构变量成员的表示方法 ,允许县有相同类型的结构变量相互赋值, 一般对结构变量的使用,包括赋值、输入、输出、运 算等都是通过结构变量的成员来实现的,不能将结构 体作为一个整体来处理。 表示结构变量成员的一般形式是:结构变量名成员名 例如:boy1mum即第一个人的学号 boy2.sex 即第二个人的性别 如果成员本身又是一个结构则必须逐级找到最低级的 成员才能使用 例如: boy 1 birthday. month 紫成员可以当作一个变量来使用
结构变量成员的表示方法 允许具有相同类型的结构变量相互赋值 一般对结构变量的使用,包括赋值、输入、输出、运 算等都是通过结构变量的成员来实现的,不能将结构 体作为一个整体来处理。 表示结构变量成员的一般形式是: 结构变量名.成员名 例如: boy1.num 即第一个人的学号 boy2.sex 即第二个人的性别 如果成员本身又是一个结构则必须逐级找到最低级的 成员才能使用。 例如:boy1.birthday.month 成员可以当作一个变量来使用
结构变量的赋值:允许具有相同类型的结构变量 相互赋值;给各成员赋值。 【例】给结构变量赋值并输出其值。 main i struct stu int num char name char sex, float score;) boy 1, boy2 boy l num=102 boy 1. name="Zhang ping printf("input sex and scoren") scanf("%c%f", &boy 1. sex, &boy 1 score) boy2=boy l printf("Number=%d nName=osn", boy2 num, boy 2. name) printf("Sex=% Score=%fn", boy 2. sex, boy2 score);)
结构变量的赋值:允许具有相同类型的结构变量 相互赋值;给各成员赋值 。 【例】给结构变量赋值并输出其值。 main( ) { struct stu{ int num; char *name; char sex; float score; } boy1,boy2; boy1.num=102; boy1.name="Zhang ping"; printf("input sex and score\n"); scanf("%c %f",&boy1.sex,&boy1.score); boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,boy2.name); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); }
结构变量的初始化:和其他类型变量一样,对结 构变量可以在定义时进行初始化赋值 【例】对结构变量初始化。 ma struct stu/*定义结构* f int num; char name char sex float score, 3boy2, boy 1=(102, Zhang ping", M, 78.5) boy2=boy 1 printf("Number=%dnName=%sn", boy2 num, boy 2. name) printf("Sex=%ocn Score=%fn", boy2 sex, boy2 score);)
结构变量的初始化:和其他类型变量一样,对结 构变量可以在定义时进行初始化赋值。 【例】对结构变量初始化。 main( ) { struct stu /*定义结构*/ { int num; char *name; char sex; float score; }boy2,boy1={102,"Zhang ping",'M',78.5}; boy2=boy1; printf("Number=%d\nName=%s\n",boy2.num,boy2.name); printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score); }