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