文档介绍:第十一章结构体与共用体
教学目标
掌握结构体类型及结构体变量的定义与引用方法;
理解结构体变量的存储结构;
初步掌握链表的概念及对链表的基本操作;
了解共用体类型及共用体类型变量的定义;
了解枚举类型的定义方法及枚举类型数据的使用;
了解用typedef定义数据类型别名的方法。
基本要求
能够阅读、编写和调试有关结构体的应用程序,初步掌握有关链表的一些基本操作。
第十一章结构体与共用体
结构体类型
结构体是一种构造数据类型
用途:把不同类型的数据组合成一个整体---自定义数据类型
struct [结构体名]
{
类型标识符成员名;
类型标识符成员名;
…………….
};
成员类型可以是
基本型或构造型
struct是关键字,
不能省略
合法标识符
可省:无名结构体
一、结构体类型的定义
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
结构体类型定义只描述结构的组织形式,不分配内存。
例:结构体类型的定义
struct 结构体名
{类型标识符成员名;
类型标识符成员名;
…………
};
struct 结构体名变量名表列;
例 struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
struct student stu1,stu2;
1. 先定义结构体类型,再定义结构体变量
二、结构体变量的定义(三种形式)
name
num
sex
age
score
addr
2字节
2字节
20字节
1字节
4字节
30字节
…
…..
变量stu1的存储结构
一般形式1:
struct 结构体名
{
类型标识符成员名;
类型标识符成员名;
…………….
}变量名表列;
例 struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
一般形式2:
2. 定义结构体类型的同时定义结构体变量
一般形式3:
struct
{
类型标识符成员名;
类型标识符成员名;
…………….
}变量名表列;
例 struct
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
用无名结构体直接定义
变量,只能一次.
3. 直接定义无名结构体变量
结构体类型与结构体变量概念不同。
类型:不分配内存; 变量:分配内存
类型:不能赋值,存取,运算; 变量:可以赋值,存取,运算
结构体类型可以嵌套定义。
结构体类型及变量的作用域与生存期。
例 struct date
{ int month;
int day;
int year;
};
struct student
{ int num;
char name[20];
struct date birthday;
}stu;
num
name
birthday
month
day
year
说明:
变量stu的存储结构:
1. 引用方式:
例 struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
=10;
=;
=+3;
++;
2. 引用规则:结构体变量不能整体引用,只能引用变量成员
三、结构体变量的引用
成员(分量)运算符
优先级: 15(最高)
结合性:从左向右
结构体变量的引用示例
例 struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu1,stu2;
printf("%d,%s,%c,%d,%f,%s\n",stu1); ()
stu1={101,"Wan Lin",'M',19,,"DaLian"}; ()
if(stu1==stu2