文章目录
一.前言
C语言提供了一些由系统提供好的数据类型,如:int,float,char等,用户可以在程序中用他们定义变量,解决一般的问题,但是在实际问题中只有这些数据类型是不够的,有时候我们需要其中的几种一起来修饰某个变量,在此情况下,使用简单的基本数据类型甚至是数组都是很困难的;我们就需要自己建立一些数据类型,并用它来定义变量。
二.结构体的引入
1.结构体的定义:由不同类型数据组成的组合型的数据结构称为结构体。
2.结构体的优点:结构体不仅可以记录不同类型的数据,而且使得数据结构是“高内
聚,低耦合”的,更利于程序的阅读理解和移植,结构体的存储方式可以提高CPU对内
存的访问速度。
三.结构体声明
我们以一个学生信息为例来说明
struct Student{
//声明结构体
char name[20]; //姓名
char sex; //性别
int age; //年龄
int num; //学号
float score; //成绩
}; //注意最后有一个分号
上述代码Student 是自定义的结构体名,与struct构成一个新的类型名,name ,sex,age,num,score是结构体内的各个成员,对于成员都应进行类型声明,即
类型名 成员名;
上述结构体的组织结构:
声明一个结构体类型的一般形式为:
struct 结构体名
{
成员列表;
};
说明:
- 定义一个结构体类型只是进行了描述,编译时并不分配存储空间,所以不能对定义的结构体类型进行赋值。
- 大括号里的内容为结构体成员,结构体成员可以是简单变量,数组,指针,也可以是结构体或共用体等。
- 结构体类型定义可以放在函数内部,也可以放在函数外部;放在内部:只在函数内部有效;放在外部:所有函数有效。(类似全局变量和局部变量)
- 同一结构体内各成员不可以重名,成员名可以和程序中变量名相同,系统会识别。
- 最后的分号不要忘了这个分号也相当于是一个语句,有的编译器会自己加上。
对于说明的第二点进行举例
如果结构体中成员为结构体时:
struct Student{
//声明结构体
char name[20]; //姓名
char sex; //性别
struct data_type birthday //生日
int num; //学号
float score; //成绩
};
这个结构体的组织结构为:
相比于最初的组织结构,如果结构体成员为结构体时也是合理可行的。
四.结构体变量的定义
之前结构体的声明只是告诉编译器该如何表示数据,但是它没有让计算机为其分配空间。我们要使用结构体,那么就需要创建变量,也就是结构体变量。
结构体变量定义的三种形式:
1.先定义类型,在定义变量:
struct Student{
//声明结构体
char name[20]; //姓名
int num; //学号
float score; //成绩
};
struct Student stu1; //定义结构体变量
最常用的方法,较直观。
2.定义类型的同时定义变量
struct Student{
char name[20];
int num;
float score;
}stu1; //在定义之后跟变量名
是形式一的简略形式。
3.直接定义结构体变量,省略结构体名
struct {
//没有结构名</