前言
结构体在c语言中占据半壁江山,所以一定要好好学,在以后的数据结构中几乎全部是在玩结构体,包括用c语言写的其他软件(nginx, php)等,基本通篇都是在用到结构体。
什么结构体
c语言中有基本的数据类型外,还有数组类型,但是这些类型都比较单一,定义成什么类型后,就是这个类型了。数组也是。数组里面的所有的类型都是同一个类型。
那么,为了解决在一个定义的变量中出现多种不同的数据类型,就出现了结构体。就是在结构体内可以允许包含各种各样不同的数据类型。
结构体的申明
结构体用struct
关键字来申明,比如,举个例子,申明一个人:
struct People {
double height;
char name[10];
int age;
}
每个成员都用自己的类型申明,并且用;
结尾。这样,就申明来一个结构体变量,这种情况下是不咱用存储空间的。只要在定义一个结构体变量的时候,才会分配空间。
定义一个结构体变量
有很多种方式来申明一个变量为结构体变量,第一种是最常见的:
struct People yangyi;
这样我就定义了一个变量yangyi
为People
类型的结构体变量。
还一种是在申明的同时就给定义了:
struct People {
double height;
char name[10];
int age;
} yangyi;
像这样,直接跟在最后一个}
后面写上去,就定义好了一个变量,和上面的那种方式是一样的。
还一种方式呢,是直接把结构体的名字都省略掉:
struct {
double height;
char name[10];
int age;
} yangyi;
不过不推荐用这种写法,虽然看起来比较精简,但是,它却不能重复利用了,是一次性的定义了一个结构体变量yangyi
,不能拿来定义另外的变量了。
结构体的初始化
上面,我们申明了结构体,并定义了一个这个类型的结构体变量,现在就是初始化了,也就是给这个结构体赋值,
struct People yangyi = {
176.56,"yangyi",20}; //第一种初始化方式
用{}
花括号把里面的包含的变量依次一个一个按照他们的类型来赋值。
一定要注意的是:结构体变量的定义和赋值初始化必须是连在一起的,因为学过其他的语言的,很容易想当然的犯这个错误,将定义和初始化赋值