C++结构体和联合体

自定义指针结构体

通过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;
}

相关内容

0%