结构体的声明及其初始化

当我们需要表示一些复杂事物的时候,比如一个人的个人信息,包含姓名、性别、年龄、身份证号等信息。那要怎么使用一种数据表示一个人的个人信息呢?答案是结构体。


目录

一、结构体的声明方式

1、正常声明(三种方式:逐步补全)

(1) 仅声明

(2) 声明 + 定义结构体变量

(3) 声明 + 定义结构体变量 + 初始化

2、不完全声明(匿名结构体)

二、结构体变量的定义和初始化

1、结构体变量的定义

(1) 声明的同时就定义好

(2) 先声明,在其他地方定义

2、结构体变量的初始化


一、结构体的声明方式

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值