第9章
构造数据类型
1
2010春季学期 何英
本章主要内容
引例
结构体数据类型
定义数据类型、定义变量、引用、初始化
结构体数组
结构体变量与函数(自学)
共用体数据类型
枚变量名 成员名 [ 二级成员名 ]
2) 只能对最低级成员进行操作。如:
。
引用结构体变量
num
name
sex
month
day
addr
year
birthday
struct student
{ …
struct date birthday;
…
} st1, st2 ;
11
2010春季学期 何英
3) 不能将一个结构体变量直接进行输入输出,只能对结构体变量的各成员进行输入输出。
例:
scanf(“%d,%s,%c,%d,%f,%s”, &st1);
printf(“%d,%s,%c,%d,%f,%s”, st1);
scanf(“%d”, &);
printf(“%s,%d”, , );
12
2010春季学期 何英
4) 两个同类型的结构体变量可以相互整体赋值。
例:struct student st1,st2;
st1={ ……. };
st2=st1;
13
2010春季学期 何英
结构体变量的初始化(正确形式)
例
struct student
{ long int num;
char name[20];
char sex;
char addr[30];
} a={89031,“Li Lin”,‘M’,“123 Beijing Road”};
main( )
{ printf ( “%ld,%s,%c,%s\n”,
, , , ); }
输出结果:
89031,Li Lin,M,123 Beijing Road
14
2010春季学期 何英
例
struct student
{ long int num=89031;
char name[20]=“Li Lin”;
char sex=‘M’;
char addr[30]= “123 Beijing Road”;
} a;
main( )
{ printf ( “%ld,%s,%c,%s\n”,
, , , ); }
结构体变量的初始化(错误形式)
15
2010春季学期 何英
结构体数组----每个数组元素都是结构体类型
例 有4个学生,每个学生包括学号、姓名、成绩,要求找出成绩最高者的姓名和成绩。
main( )
{
struct student s[4];
int max;
int i, temp=0;
struct student
{ int num;
char name[20];
int score;
};
16
2010春季学期 何英
结构体数组的存储示意图
………
98
zhanghong
0802
65
xiaoping
0801
s[0] (24B)
s[1] (24B)
num(2B)
name(20B)
score(2B)
17
2010春季学期 何英
for (i=0; i<4; i++)
scanf("%d%s%d",
&s[i].num, s[i].name, &s[i].score);
for (max=s[0].score, i=1; i<4 ; i++)
if (s[i].score>max)
{max=s
chap9(构造类型) 来自淘豆网m.daumloan.com转载请标明出处.