title: Cplusplus-struct
date: 2016-05-07 15:00:44
tags: C++
C++结构体与共用体的使用

比如我们需要一个数据类型用于储存某个人的年龄、性别、地址,这个时候需要用到结构体
声明结构体:
1
2
3
4
5
6struct mystruct
{
int age;
string sex;
string address;
};结构体的使用:
1
2
3
4
5
6mystruct Jack=
{
30,
"男",
"shanghai"
};C++11可以省略等号来初始化结构
1
2
3
4
5
6mystruct Xier
{
20,
"女",
"Beijing"
};我们可以这样来声明并创建结构体对象
1
2
3
4
5
6struct inflatable
{
char[20] name;
float vulum;
double price;
}pal,jone;
声明并创建了pal和jone
甚至可以这样做
1
2
3
4
5
6
7
8
9
10
11struct inflatable
{
char[20] name;
float volum;
double price;
} mr_glitze =
{
"Jack",
0.20,
20.30
};访问结构体元素
访问结构体元素和用类对象访问函数和变量是一样的,使用: 对象名.变量名1
2mr_glitze.name;//访问到了Jack
mr_glitze.price;//访问到了20.30结构数组
我们可以像使用常规数组一样来使用结构数组,原理都是一样的根据上面的例子,我创建了inflatable这个结构,就可以创建它的数组了
1
inflatable gifts[100];
记住gifts是一个数组而不是结构,像gifts.price这样使用是无效的,gitfs包含每个元素(gifts[0]~gifts[99])都是inflatable的对象,我们可以这样来访问元素:
1 | gifts[2].name; |
初始化结构数组
1 | inflatable guest[2]= |
- 共用体
在日常生活工作中,我们会遇到要储存一个不同类型的值,有时候它是整型、有时候是字符串类型,比如小李的公司每个部门给员工编号,每个部门的编号都不同,有的部门用整型数据给员工编号,而有的部门给员工起个绰号(字符串),这样当我们要把员工数据录入的时候就有麻烦了,所以这时候就要用共用体。
共用体的声明和结构体一样
1
2
3
4
5union myUnion
{
int ID_int;
string ID_str;
};
现在就可以使用myUnion来储存int
变量和string变量了1
2
3myUnion mu;
mu.ID_int=045311;
mu.ID_str="令狐冲";
需要注意的是,共用体每次只能储存一个变量,第一次把ID_int初始化为045311,当我再次初始化ID_str的值时,原来的ID_int的内存将被清空,用来储存ID_str的值