本次课内容,1、结构体类型概述,2、结构体类型变量的定义和引
用。
教学目的:掌握结构体类型的相关概念,掌握结构体变量的定义和
引用。
重点:结构体概念、定义和引用。
难点:结构体成员的引用。
预习,
数组、记录、结构体。
如:一个学生的情况描述需多种数据类型(一个记录),一个数组
又只能存放一种数据类型,当用数组来记录学生的记录时,需多个
不同类型的数组,操作不方便。 C语言采用结构体类型来进行记录
的描述。
一、结构体类型概述
1、结构体概念及定义
结构体类型:由一些不同类型的数据组合而成的数据类型。如
如:学生一般情况数据构成由:姓名、年龄、性别、民族、住址、
电话等。
2、定义
如,struct student
{
char name[20];
int age;
char sex;
char nation;
char address[20];
long tel;
};
一般形式,
struct 结构体名
{ 成员项表 };
注:定义结构体类型,不是定
义变量,只是说明类型的结构,
类型说明不占内存。
Student 是一个具有六个成员的
结构体数据类型。引用时所占
字节总数为,48字节(各成员
所占字节总和)。
二、结构体类型变量的定义和引用
1、结构体类型变量的定义
(1)、定义了结构类型后定义变量
如,struct student worker,students;
类型标识符 结构体变量
一般形式,
sturct 结构体类型名 变量名表;
如,struct std
{
char name[10]
int num;
float score;
};
struct std students,var;
(2)定义结构的同时定义变量
一般形式,
sturct 结构体类型名
{ 成员列表 } 变量名表;
定义结构的同时定义变量举例
如,
struct std
{
char name[10]
int num;
float score;
} struct std students,var;
(3)、直接定义结构体类型变量
如,struct
{
char name[10];
int age;
char sex;
} students,worker;
(4)、嵌套定义
在结构体中利用已经定义过的结构体类型来定义成员 。
如,struct date
{
int month;
int day;
int year;
};
struct person
{
char name[10];
struct date birthday;
char sex;
int age;
};
结构体类型的内存分配,
struct date
{
int month;
int day;
int year;
};
struct person
{
char name[10];
struct date birthday;
char sex;
int age;
};
name[10]
birthday
sex
age
month
day
year
name[10] birthday month day year sex age
2、变量的初始化
struct date
{
int month;
int day;
int year;
};
struct person
{
char name[10];
struct date birthday;
char sex;
int age;
}student ={“wang li”,12,15,1985,’m’,18};
3、结构体变量的引用
(1)、引用 变量中的一个成员
如,student, age
引用变量 student中的 age(年龄)
成员。
说明,访问变量中的成员,用
,.”将变量和成员隔开 。
又如,student, birthday, day
引用 student中嵌套成员 day。
(2)结构体变量之间赋值
结构体变量在同类型的情况下可以相互赋值。
struct std
{
char name[10];
char sex;
int age;
float score
}student1 ={,wang li”,’m’,18,95.5 };
struct std student2;
student2=student1;
4、结构体的输入和输出
如,scanf(“%s %c\n”,student1.name,&student1.sex);
scanf(“%d %f\n,,&student1.age,&student1.score);
printf(“%s %c\n”,student1.name,student1.sex);
printf(“%d %f\n”,student1.age,student1.score);
注:结构体变量不能整体输入和输出,必须通过成员输入输出。
举例,
7.1 定义一个结构体变量,其成员包括:职工号、职工名、性别、
年龄、工龄、工资、地址。
struct zg
{
long num;
char name[20];
char sex ;
int age;
int length;
float salary;
char address[30];
}worker;
小结,
1、结构体类型,结构体成员;
2、结构体类型、变量定义;
3、结构体类型变量的引用。