结构体与共用体
结构体与共用体
洁构体与共用体 结构体 ⑩结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体 自定义数据类型 结构体类型定义 合法标识符 可省:无名结构体 struct结构体名 类型标识符成员名; 类型标识符成员名; 成员类型可以是 struct是关键字, 基本型或构造型 不能省略 此处分号;不能少
结构体与共用体 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体------- 自定义数据类型 – 结构体类型定义 struct [结构体名] { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 成员类型可以是 struct是关键字, 基本型或构造型 不能省略 合法标识符 可省:无名结构体 此处分号 ; 不能少
结构体变量的定义 常用形式:先定义结构体类型,再定义结构体 变量 般形式 struct结构体名 类型标识符成员名; 例 struct point 类型标识符成员名; 看看B面垂面 double x double y struct结构体名变量名表列; struct point A
例 struct point { double x; double y; }; struct point A; 结构体变量的定义 – 常用形式:先定义结构体类型,再定义结构体 变量 • 一般形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 变量名表列;
★说可 ◆结构体类型与结构体变量概念不同 ●类型:不分配内存 变量,分配内存 类型:不能赋值、存取、运算;变量:可以 ◇结构体可嵌套 今结构体 名可相同,不会混淆 心结构以例 struct point 与生存期 double x rouble y struct triangle i struct point A struct point B struct point C
说明 ❖结构体类型与结构体变量概念不同 ⚫类型:不分配内存; 变量:分配内存 ⚫类型:不能赋值、存取、运算; 变量:可以 ❖结构体可嵌套 ❖结构体成员名与程序中变量名可相同,不会混淆 ❖结构体类型及变量的作用域与生存期 例 struct point { double x; double y; }; struct triangle { struct point A; struct point B; struct point C; };
低地址 1 num 2字节 例 struct student name[O] 字节 int num: char name [20] int score 3] name 19] s1={1" Zha g San,80,90,100}s2 score[ol 2字节 score[1] 2字节 高地址 core[2] 字节 结构体类型定义描述结构 图7-1结构体变量s1的存储结构 的组织形式,不分配内存
例 struct student { int num; char name[20]; int score[3]; }s1={1,”Zhang San”,80,90,100},s2; 2字节 1字节 结构体类型定义描述结构 的组织形式,不分配内存 s1 num name[0] 2字节 2字节 2字节 score[1] score[0] score[2] …….. …….. name[19] 低地址 高地址 图 7-1 结构体变量s1的存储结构
结构体变量的引用 成员(分量)运算符 优先级:1 引用规则 结合性:从左向右 ·结构体变量不能整体引用,只能引用变量成员 引用方式:结构体变量名成员名 ◆可以将一个结构体变量赋值给另一个结构体变量 ◆结构体靛套时逐级引用 例 struct student i int num char name[20] char sex: int age; float score Stu2= stul;( char addr[30] Jstl, stu2
结构体变量的引用 – 引用规则 • 结构体变量不能整体引用,只能引用变量成员 ❖可以将一个结构体变量赋值给另一个结构体变量 ❖结构体嵌套时逐级引用 成员(分量)运算符 优先级: 1 结合性:从左向右 引用方式: 结构体变量名.成员名 例 struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; }stu1,stu2; Stu2 = stu1; ( )
结构体变量的初始化 常用形式:strt结构体名 类型标识符成员名 类型标识符成员名; struct结构体名结构体变量={初始数据}; 例 struct student i int num char name [20]; int score 3]: i struct student s1=(1, Zhang San, 85, 90, 100"1 定义变量时就初始化
结构体变量的初始化 – 常用形式: struct 结构体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; struct 结构体名 结构体变量={初始数据}; 例 struct student { int num; char name[20]; int score[3]; }; struct student s1 = {1,“Zhang San”,85,90,100”}; 定义变量时就初始化
结构体变量的初始化以及引用 例/*参考程序7-1.c* include struct student i int num; 定义变量后,再初始化 char name [20]; 要给结构体里的变量依次 int score[3] 赋值 main( sturct student s1: int l, average printf("Input number: \n") scanf(‰d",&s1num) gets(s1. name
结构体变量的初始化以及引用 例 /*参考程序 7-1.c*/ #include struct student { int num; char name[20]; int score[3]; }; main() { sturct student s1; int i,average; printf(“Input number:\n”); scanf(“%d”,&s1.num); gets(s1.name); ……} 定义变量后,再初始化 要给结构体里的变量依次 赋值
结构体数组 结构体数组的定义 三种形式: num 形式二 struct student 25B name stu[o] i int num seⅩ char name[20] age char sex num nt age name }stu[2]; sex age 定义结构体时同时定义变量
结构体数组 – 结构体数组的定义 三种形式: num name sex age num name sex age stu[0] stu[1] 25B 形式一 : struct student { int num; char name[20]; char sex; int age; }; struct student stu[2]; 先定义结构体,再定义变量 形式三 : struct { int num; char name[20]; char sex; int age; }stu[2]; 定义结构体时同时定义变量 形式二 : struct student { int num; char name[20]; char sex; int age; }stu[2]; 定义结构体时同时定义变量
结构体数组应用举例 例/*参考程序7-2.c* include #define n 3 struct stu int num; char name [20] int score[4]; J main( int i k, max struct stu SINI printf("Input data: \n") for(i=0; K<N; i++) i scanf(%d%s %d%d%d",&(s[i]. num), s[ name, &s[score[on) &(s[]. score[1]),&(S[i]. score[2]);
结构体数组应用举例 例 /*参考程序 7-2.c*/ #include #define N 3 struct stu { int num; char name[20]; int score[4]; }; main() { int i,k,max; struct stu s[N]; printf(“Input data:\n”); for(i=0;i<N;i++) { scanf(“%d%s%d%d%d”,&(s[i].num), s[i].name ,&(s[i].score[0]), &(s[i].score[1]),&(s[i].score[2]));