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