当我们需要表示一些复杂事物的时候,比如一个人的个人信息,包含姓名、性别、年龄、身份证号等信息。那要怎么使用一种数据表示一个人的个人信息呢?答案是结构体。
目录
大多数情况下我们使用的都是这样的声明方式
- struct Person
- {
- char name[20];//名字
- int age; //年龄
- char sex[5]; //性别
- char id[20]; //身份证号
- };
我们除了声明,我们可以在声明的同时将结构体变量定义好。如果说结构体Person是房屋的设计图纸的话,那么结构体变量就是一个实实在在的房屋,我们能够在这个房屋里找到图纸上所有的东西。(如截图所示)
- struct Person
- {
- char name[20];//名字
- int age; //年龄
- char sex[5]; //性别
- char id[20]; //身份证号
- }p1, p2; //p1,p2是结构体变量(或者说是参照着Person图纸造出来的房屋)

除了上述两种情况外,我们还可以在定义好结构体变量的同时,对这个结构体变量进行初始化。简答说明就是,房屋已经被造出来了,你希望现在就添置家具,还是说等需要用这个房屋的时候再添置家具。
- struct Person
- {
- char name[20];//名字
- int age; //年龄
- char sex[5]; //性别
- char id[20]; //身份证号
- }p1 = {0}, p2 = { "李四",24,"女","22222222" };
结构体的初始化采用的是花括弧‘{ }’,如果你不知道要赋什么值,你可以直接赋0;你也可以对每个成员变量进行赋值。
上述的结构体在声明的时候都是有名字的,Person就是上述结构体的名字,我们在声明的时候也可以不加名字,就相当于你不知道这个图纸 是造什么的,但是必须要在声明的时候就创建结构体变量,因为从下面初始化部分你会知道,我们要创建一个结构体变量,需要用到结构体的名字。
- //匿名结构体
- struct
- {
- char name[20];//名字
- int age; //年龄
- char sex[5]; //性别
- char id[20]; //身份证号
- }p1 = {0}, p2 = { "李四",24,"女","22222222" };
注意:以下两种结构体虽然都是匿名的,而且内容是一样的,但是编译器会认作是不同的结构体类型。

上面已经提及了一种结构体变量的定义方式,接下来就整体认识一下。
p1就是 结构体Person的结构体变量
- struct Person
- {
- char name[20];//名字
- int age; //年龄
- char sex[5]; //性别
- char id[20]; //身份证号
- }p1;
p2也是 结构体Person的结构体变量
- struct Person
- {
- char name[20];//名字
- int age; //年龄
- char sex[5]; //性别
- char id[20]; //身份证号
- }p1;
-
- int main() {
- struct Person p2; //在main函数中定义
- return 0;
- }
初始化使用花括弧'{ }'来初始化,无论是在声明的地方初始化,还是在其他地方初始化都是可以的,以下两种方式均可。
- struct Person
- {
- char name[20];
- int age;
- char sex[5];
- char id[20];
- }p1 = { "李四",24,"女","22222222" }; //在声明的地方,定义 + 初始化
-
- int main() {
- struct Person p2 = { "李四",24,"女","22222222" }; //在main函数中,定义 + 初始化
- return 0;
- }