结构体
创建结构包括两步。 首先,定义结构描述—它描述并标记了能够存储在结构中的各种数据类型。然后按描述创建结构变量(结构数据对象)。
struct employee { // 结构体声明
char name[20]; // 成员变量
int age;
float salary;
};
// 定义结构后,便可以创建这种类型的变量了:
struct employee bob;
// 在c++中使用结构体时,可以省略struct关键字
employee jack; // 可以省略struct,但是在c语言中不可以
使用成员运算符(.)来访问 各个成员。例如,employee.name
指的是结构的name
成员
结构体在代码中的使用
#include <iostream>
using namespace std;
struct employee {
char name[20];
int age;
float salary;
};
int main() {
employee bob = {
"bob",
20,
10000.8
};
cout << bob.name << " " << bob.age << endl;
return 0;
}
可以 将声明放在main( )函数中,紧跟在开始括号的后面。另一种选择是将声 明放到main( )的前面。
C++11结构初始化
与数组一样,C++11也支持将列表初始化用于结构,且等号(=)是可选的:
employee bob {
"bob",
20,
200
};
其次,如果大括号内未包含任何东西,各个成员都将被设置为零。
最后,不允许缩窄转换。
其他结构属性
C++使用户定义的类型与内置类型尽可能相似。例如,可以将结构 作为参数传递给函数,也可以让函数返回一个结构。另外,还可以使用 赋值运算符(=)将结构赋给另一个同类型的结构,这样结构中每个成 员都将被设置为另一个结构中相应成员的值,即使成员是数组。
可以同时完成定义结构和创建结构变量的工作。为此,只需将变量
名放在结束括号的后面即可:
struct employee {
char name[20];
int age;
} bob;
还可以声明没有名称的结构类型,方法是省略名称,同时定义一种
结构类型和一个这种类型的变量:
struct {
char name[20];
int age;
} bob;
但这种类型没有名称,因此以后无法创 建这种类型的变量。