当前位置:文档之家› 第8章C语言的结构体与共同体

第8章C语言的结构体与共同体

例strsutcrtuct { { int num; 类c型ha标r 识na符me[20]成; 员名; 类c型ha标r s识ex符; 成员名; int…a…ge;………. }变量名表flo列at;score; char addr[30]; }stu1,stu2; 用无名结构体直接定义 变量只能一次
8
num
{ int num;
name
char name[20]; sex
char sex;
age
int age;
float score; char addr[30]; score
};
addr

2字节 20字节 1字节 2字节
4字节
30字节
…..
s等不结tr都能构uc只省体t s是略类tu其。型de中定nt的义应成的作员作为用,一域且个s类tr型u结的c整t构组及体体织“,类形}n型式”um定,后不,n义的分am描“配e述;[内2结0”存] 构
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
说明:
✓ 结构体类型与结构体变量概念不同
类型:不分配内存;
变量:分配内存
类型:不能赋值、存取、运算; 变量:可以
✓ 结构体可嵌套
✓ 结构体成员名与程序中变量名可相同,不会混 淆
✓ 结构体类型及变量的作用域与生存期
9
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
例 struct student
{ int num;
char name[20];
char sex;
int age;
char addr[30];
}stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”};
12
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
第八章 结构体、共用体和枚举类型
8.1 结构体 8.2 共用体 8.3 枚举类型 8.4 用typedef定义类型
1
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
8.1.1 结构体类型声明
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体-------自
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
2、结构体变量的输入输出 不允许对结构体变量进行整体的输入输出 如:scanf(“%s%c%d%f”,&stu1);
struct student
程序运行过程:
{
Enter num,age,score:
int num;
1001,19,98.5↙
} 14
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
8.1.5 结构体数组
– 结构体数组的定义
形式二一三::
25B
stsrtuructctstsutuddenent t
{ int num;
char name[20];
char sex;
int age;
}s;tu[2];
struct student stu[2];
如职工信息结构体类Байду номын сангаас为:
struct person
{
char name[20]; /*姓名*/
char address[40]; /*地址*/
float salary;
/*工资*/
float cost;
/*扣款*/
struct date hiredate; /*聘任日期*/
};
5
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
例 统计后选人选票
struct person { char name[20];
int count;
name Li
}leader[3]={“Li”,0,“Zhang”,0,”Wang“,0}; Zhang
main() { int i,j; char leader_name[20];
Wang
stu[0]
"Zhang" 'M'
①如果p的初值为stu,即指P向’ 第一个元11素8010,2 则p+1后
指向下一个元素的起始地址。s请tu区[1]别:"Li"
(++p)->num 和 (p++)->num
num name sex age num name sex age
stu[0] stu[1]
15
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
– 结构体数组的初始化
– 结例构体st数ru组ct 的引用
{ int num;
引用方式:cha结r 构na体me数[2组0]名; [下标].成员名
/*体重*/
char addr[50]; /*住址*/
};
例 日期, 包括年、 月、 日:
struct date {int year; /*年*/ month; /*月*/ day; /*日*/
};
4
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
结构体类型可以嵌套定义 即一个结构体类型中的某 些成员又是其他结构体类型
8.1 结构体
8.1.2 结构体变量的定义
• 先定义结构体类型,再定义结构体变量 – 一般形式:
s例trucsttru结ct 构st体ud名ent
{ { int num; 类型标c识ha符r na成m员e[2名0];; 类型标c识ha符r sex成; 员名;
………int…ag…e;.
};
float score;
char sex;
age
int age;
}stu;
struct student *p=&stu;
18
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
– 使用结构体指针变量引用成员形式
(*结构体指针名).成员名 结构体指针名->成员名
结构体变量名.成员名 指向运算符 例 iinntt优结*先合np;=级方&:向n;:1 从左向右 *p=10; n=10
char sex;
struct studeint age;
stu[1].age++;
{ in}tstun[u]m=;{{……},{……},{……}};
char name[20];
char sex;
int age; }str[3];
strcpy(stu[0].name,”ZhaoDa”);
16
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
8.1.3 结构体变量的引用
• 引用规则 – 结构体变量不能整体引用,只能引用变量成员
• 引用方式: 结构体变量名.成员名
如果结成构员体(分变量)类运型算相符同,可以将一个结 构体变量优赋先值级给:另1 一个结构体变量
结构体结嵌合套性时:从逐左级向引例右用; stu1=stu2;
例: stu1.birthday.day=23; stu1.birthday.month=8; stu1.birthday.year=2003;
类c型ha标r 识na符me[20]成; 员名; 类c型ha标r s识ex符; 成员名;
in…t a…ge…; ……. }变量名表flo列at;score;
char addr[30]; }stu1,stu2;
7
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
• 直接定义结构体变量 – 一般形式:
int age; float score;
num:1001,age:19,score:98.5
}stu;
void main()
{ printf("Enter num,age,score:");
scanf("%d,%d,%f",&stu.num,&stu.age,&stu.score);
printf("num:%d,age:%d,score:%.1f\n",stu.num,stu.age,stu.score);
struct student stu1; struct student *p=&stu1; stu1.num=101; (*p).num=101
19
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
例 输出数组中各元素中各成员的值。
struct student
{int num;
main()
struct student stu1={112,“Wang Lin”,‘M’,19, “200 Beijing Road”};
11
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
– 形式二:
struct
结构体名
{
类型标识符 成员名;
类型标识符 成员名;
…………….
}结构体变量={初始数据};
10
C语言教学幻灯片版第八章 结构体、共用体和枚举类型
8.1 结构体
8.1.4 结构体变量的使用
1、 结构体变量的初始化
– 形式一:
例 struct ssttruudcetnt 结构体名 { in{t num; char类na型m标e[识20符]; 成员名; char类sex型; 标识符 成员名; int age…; …………. ch};ar addr[30]; }; struct 结构体名 结构体变量={初始数据};
相关主题