C++ 结构体
结构是用户定义的类型,结构声明 定义了这种类型的数据属性。
结构体的 声明
,创建
和 初始化
分开进行
定义一个结构
描述这个结构能够存储的各种数据类型:
struct struct_name {
char name[23];
float num;
int price;
};
关键字 struct | 表明这是一个 结构体 声明,定义了这样的一个结构体。 |
struct_name | 自己定义的这种数据类型的名称,等同于 int , float 。 |
char name ... int price | 结构体成员 |
注:
}
后要加;
。
创建结构体类型变量
声明一个 struct_name
类型的变量 hat
:
struct_name hat;
注:c++ 在声明结构变量时,允许省略关键字
struct
,而 c 语言要:struct struct_name hat;
。说明,在 c++ 中,结构声明定义了一种新的类型,这种新类型与基本类型名(如:int
)用法相同。
成员运算符 .
使用 成员运算符 .
访问结构体的各个成员,如:
hat.name[1];
hat.num;
hat
是一个 结构,而hat.num
是一个float
型变量。
访问类成员的方式由此演化而来,如:cin.getline()
。
初始化
C++11 同数组一样,支持使用列表初始化结构体:
struct_name hat {"hat name", 0.13, 11};
struct_name nat = {"nat name",
0.45,
34
};
=
可选,不用必须选择。- 初始化列表可以将数据放在同一行,也可以放在不同行,但均需使用
,
进行分隔。}
与数据之间不许再放,
。}
之后要有;
。
struct_name cat {};
- 如果
{}
中没有任何东西,则每个成员均会被置0
。
cat.name
的每个字节都会被置0
,cat.num
,cat.price
均被置0
。
结构体的部分属性
- 结构体可以作为参数传递给函数,也可以作为函数的返回值。
- 可以使用 赋值运算符
=
将结构赋给另一个 同类型 的结构,即使成员中有数组也可以,这种赋值被称为 成员赋值。
结构体的 声明
,创建
和 初始化
同时进行
声明
和 创建
同时进行
struct pse {
int num;
float sen;
}pse_na, pse_nb;
将创建的结构体变量名称放到
}
后,如有多个,则用,
分隔开,最后一个后加上;
即可。
声明
,创建
和 初始化
同时进行
struct pse {
int num;
float sen;
}pen_na = {1, 2,34};
没有名称的结构体类型
没有名称的结构体类型只能再声明的同时创建变量,之后就无法再创建新的这种类型的变量了。
struct {
int num;
float sen;
}pen_na;
c++ 结构除了成员变量以外,还可以有成员函数,但他们经常被用在类中,而不是结构体当中。