当我们需要表示一些复杂事物的时候,比如一个人的个人信息,包含姓名、性别、年龄、身份证号等信息。那要怎么使用一种数据表示一个人的个人信息呢?答案是结构体。
目录
一、结构体的声明方式
1、正常声明(三种方式:逐步补全)
(1) 仅声明
大多数情况下我们使用的都是这样的声明方式
struct Person
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[20]; //身份证号
};
(2) 声明 + 定义结构体变量
我们除了声明,我们可以在声明的同时将结构体变量定义好。如果说结构体Person是房屋的设计图纸的话,那么结构体变量就是一个实实在在的房屋,我们能够在这个房屋里找到图纸上所有的东西。(如截图所示)
struct Person
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[20]; //身份证号
}p1, p2; //p1,p2是结构体变量(或者说是参照着Person图纸造出来的房屋)
(3) 声明 + 定义结构体变量 + 初始化
除了上述两种情况外,我们还可以在定义好结构体变量的同时,对这个结构体变量进行初始化。简答说明就是,房屋已经被造出来了,你希望现在就添置家具,还是说等需要用这个房屋的时候再添置家具。
struct Person
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[20]; //身份证号
}p1 = {0}, p2 = { "李四",24,"女","22222222" };
结构体的初始化采用的是花括弧‘{ }’,如果你不知道要赋什么值,你可以直接赋0;你也可以对每个成员变量进行赋值。
2、不完全声明(匿名结构体)
上述的结构体在声明的时候都是有名字的,Person就是上述结构体的名字,我们在声明的时候也可以不加名字,就相当于你不知道这个图纸 是造什么的,但是必须要在声明的时候就创建结构体变量,因为从下面初始化部分你会知道,我们要创建一个结构体变量,需要用到结构体的名字。
//匿名结构体
struct
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[20]; //身份证号
}p1 = {0}, p2 = { "李四",24,"女","22222222" };
注意:以下两种结构体虽然都是匿名的,而且内容是一样的,但是编译器会认作是不同的结构体类型。
二、结构体变量的定义和初始化
上面已经提及了一种结构体变量的定义方式,接下来就整体认识一下。
1、结构体变量的定义
(1) 声明的同时就定义好
p1就是 结构体Person的结构体变量
struct Person
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[20]; //身份证号
}p1;
(2) 先声明,在其他地方定义
p2也是 结构体Person的结构体变量
struct Person
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[20]; //身份证号
}p1;
int main() {
struct Person p2; //在main函数中定义
return 0;
}
2、结构体变量的初始化
初始化使用花括弧'{ }'来初始化,无论是在声明的地方初始化,还是在其他地方初始化都是可以的,以下两种方式均可。
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;
}