目录
前言
首先c语言中内置类型很多包括int,float,char,double,short等等,但是实际生活中有很多对象是无法用一种内置类型来描述的,比如描述中学生,一个学生首先是姓名,接着有班级,专业和学号,这里我们就需要从四个方面去描述,所以我们需要创建一个自定义类型来包含用于描述的四个变量。本文讲解的是自定义类型之一,结构体。
一.结构体的基础知识
结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量,如这里的学生的姓名是char型,而学号是int型。
1.结构体的声明
如何声明一个结构体呢?
struct student
{
char name[10];
char major[20];
int class;
int ID;
};
这里就是声明了一个标签叫student的结构体类型,结构体类型中包含的就是成员变量,比如这里的name,major,class,ID。注意这里的student并不是变量,它和struct一起组成了一个结构体类型,比如:int表示整型,而这里struct student表示一个结构体类型。
那么有没有可能不写结构体标签student声明函数呢?
struct
{
char name[10];
char major[20];
int class;
int ID;
}sd1;//匿名结构体
这里结构体并没有写上标签名,这种声明在c语言中是被允许的,称为匿名结构体,但是这种声明你想要创建变量就只能选择在后面直接写上变量的名称。
2.创建变量和初始化
我们拥有了一个结构体类型,那么我们想要用这个结构体类型去创造一个变量该怎么做呢?
这里有两种方式:
struct student
{
char name[10];
char major[20];
int class;
int ID;
}sd1,sd2;//全局变量
int main()
{
struct student sd3;//局部变量
struct student sd4;
}
首先第一种是直接在结构体声明的后面直接写上变量的名称,如这里的sd1,sd2。
第二种是像int,char,float一样的创建变量,如这里的sd3,sd4。
sd1,sd2和sd3,sd4的不同在于一个是全局变量,一个是局部变量。
你也可以用第一种方法创建局部变量。
int main()
{
struct student
{
char name[10];
char major[20];
int class;
int ID;
}sd1, sd2;//局布变量
}
也可以用第二种方法创建全局变量。
struct