目录
定义结构体变量
1.C语言的数据类型
空类型void(没有数据)
数据类型
枚举类型 enum
空类型 void
派生类型
(1).空类型void(没有数据)
(2).简单类型
(单一数据)//预定义类型:编译器预设了存储格式、编码方式,以及存储空间大小,可以在程序中直接使用类型名关键字定义变量。例如:double area;
·定点数
int、short、long、char unsigued、signed
·浮点数
float、double
·指针(存储内存地址)
·枚举
(3).构造类型(复合数据)
自定义类型:程序中使用这种数据,需要先定义类型即定义该数据的存储结构或表现形式,对于较简单的自定义类型,也可以在定义类型的同时定义变量。
·数组
·结构体.
·共用体
2.结构体:类型不同的元素构成的集合
·存储8个人的体重
·-维数组:float a[8];
·存储三个人四门课成绩
·二维数组:int b[3][4];
·存储个人资料
·需要存储类型不同的数据
·自定义类型.
·结构体
·存储人物信息表
·存储多个人物信息
·每个人的各种信息不同
·但人与人信息格式相同
·结构体数组.
·广义二维数组
3.怎样创建结构体类型
·结构体是一种构造数据类型
·用途:把不同类型的数据组合成一个整体---自定义数据类型
结构体类型定义:
struct[结构体类型名]//struct是关键字,不能省略
{
类型标识符 成员名1;//成员类型可以是基本型或其他构造类型
类型标识符 成员名2;
};结构体类型定义是一条语句,此处分号不能丢
Eg;
(1).如下例,定义一个结构体存储学生信息,包含学生的学号、姓名性别、年龄、成绩,地址:
Num name seX age score addr
10010 Li Fang M 18 87.5 Beijing
struct Student
{ int num; //学号为整型
char name[20]; //姓名为字符串
char sex; //性别为字符型
int age; //年龄为整型
float score; //成绩为实型
char addr[30]; //地址为字符串
}; //注意最后有一个分号
结构体类型定义只描述结构的组织形式,不分配内存
(2).结构体是将类型不同的元素组成集合,但如果需要,成员类型相同的情况也可以使用结构体类型。例如,定义一个日期型结构体:
struct Date
{int month;//月
int day;//日
int year;//年
};
(3).结构体可以嵌套定义,即结构体成员可以属于另一个结构体类型
struct Student
{int num;
char name[20];
char sex;
int age;
struct Date birthday;//成员birthday属于struct Date类型
char addr[30];
};
4.定义结构体变量
定义结构体变量有三种方式
(1).先声明结构体类型,再定义该类型的变量
一般形式:
struct 结构体类型名
{
类型标识符成员名;
类型标识符成员名;
};
struct 结构体类型名 变量名表列;
(2).在定义结构体类型的同时定义结构体变量
一般形式
struct 结构体类型名
{
类型标识符成员名;
类型标识符成员名;
}变量名表列;
(3).不指定类型名而直接定义结构体类型变量
一般形式
struct // 此处省略结构体类型名,用无名结构体直接定义变量只能用一次
{
类型标识符成员名;
类型标识符成员名;
}变量名表列;
注意:
(1)结构体类型与结构体变量是不同的概念,不要混淆。只能对变量赋值存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。(2)结构体变量分配的内存空间要能够存储所有成员,所以他的内存空间大小等于所有成员的总和。
(3)结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一对象。
(4)对结构体变量中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。
(5)注意结构体类型和结构体变量的作用域及生存期