自定义指针结构体

通过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 —