C/C++有char、int、float、double等基本数据类型,但是假如我们要存储一个人的信息,包含姓名、身高、体重等信息,仅使用一种基本数据类型是无法实现的,因此我们希望有一种数据格式能够将所有这些信息存储在一个单元中,这就需要使用struct结构体完成。
一、结构体声明和使用
(1)按照前面简介中的要求我们可以定义如下的结构体完成对一个人各种信息的描述:
struct people
{
char Name[20];
unsigned int Height;
float Weight;
};
关键字struct表明这是在定义一个结构体,people是这种数据格式的名称,因此我们可以像使用char、int等创建变量一样使用people创建people类型的变量了。
(3)定义的struct结构体变量可以通过成员运算符(.)来访问各个成员,如有定义:
people person1=
{
"XiaoMing",
180,
62.5
};
则person1.Name就是结构的Name[20]成员,使用cout << person1.Name << endl;就可以输出显示XiaoMing
(4)结构声明的位置很重要,这涉及到 变量作用域 ,可以将声明放在函数中,也可以放到main()的前面,区别在于前者属于 内部声明 只能被该函数使用,后者 外部声明 可以被其后面的任何函数使用。二、结构体的初始化
(1)结构体的初始化可以像上面使用的方式:
people person1=
{
"XiaoMing",
180,
62.5
};
(2)和数组一样,使用逗号将各成员值分开,并将所有成员用大括号括起来。也可以将各成员初始化放在同一行:
people person2 = { "XiaoMing", 180, 62.5 };同样应该用逗号将各成员分开。
(3)C++11允许如下初始化方式:people person3 { "XiaoMing", 180, 62.5 };即省略等号(=)。
(4)如果大括号内未包含任何内容,如:people person4 {};则各个成员将被初始化为0,且person4.Name每个字节被初始化为0。
三、结构数组
(1)可以创建元素为结构的数组,如:people person[10];这样person就是一个people数组,其每一个元素(person[0],person [1]等)都是people对象
(2)结构数组的初始化:
people person[0]=
{
"XiaoMing",
180,
62.5
};