C++结构体和联合体
自定义指针结构体
通过typedef关键字给结构体重命名,重命名的时候结构体指针的名字前面需要加*号
1#define _CRT_SECURE_NO_WARNINGS
2#include<iostream>
3
4typedef struct Role
5{
6 int HP;
7 int MP;
8} * PRole;
9
10
11int main()
12{
13 Role user;
14 PRole puser = &user;
15
16 puser->HP = 10;
17 puser->MP = 20;
18
19 return 0;
20}
如果重命名Role结构体的时候重命名的前面不加上*,则相当于是个Role定义了一个别名,而不是给Role结构体的指针定义了一个别名。
联合体
语法:
1union 联合体名称
2{
3 变量类型 变量名称;
4 变量类型 变量名称;
5}
6
7如:
8union USER
9{
10 short sHP;
11 int nHP;
12}
通过union可以创建一个联合体,union中的成员变量共享内存,因此union的类型大小由其最大的成员变量决定。
匿名结构体和联合体
匿名结构体
一般在结构体内使用,一般不会重用
1struct test
2{
3 union
4 {
5 short sHp;
6 long lHp;
7 } user;
8}
匿名联合体
1struct test
2{
3 struct
4 {
5 short sHp;
6 long lHp;
7 } user;
8}
— END —