• LeekinDeveloper@Gmail.com

C++ 结构体



title: Cplusplus-struct
date: 2016-05-07 15:00:44

tags: C++

C++结构体与共用体的使用

这是一个装饰图

比如我们需要一个数据类型用于储存某个人的年龄、性别、地址,这个时候需要用到结构体

  1. 声明结构体:

    1
    2
    3
    4
    5
    6
    struct mystruct
    {
    int age;
    string sex;
    string address;
    };
  2. 结构体的使用:

    1
    2
    3
    4
    5
    6
    mystruct Jack=
    {
    30,
    "男"
    "shanghai"
    };
  3. C++11可以省略等号来初始化结构

    1
    2
    3
    4
    5
    6
    mystruct Xier
    {
    20,
    "女"
    "Beijing"
    };
  4. 我们可以这样来声明并创建结构体对象

    1
    2
    3
    4
    5
    6
    struct inflatable
    {
    char[20] name;
    float vulum;
    double price;
    }pal,jone;

声明并创建了pal和jone

  1. 甚至可以这样做

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct inflatable
    {
    char[20] name;
    float volum;
    double price;
    } mr_glitze =
    {
    "Jack",
    0.20,
    20.30
    };
  2. 访问结构体元素
    访问结构体元素和用类对象访问函数和变量是一样的,使用: 对象名.变量名

    1
    2
    mr_glitze.name;//访问到了Jack
    mr_glitze.price;//访问到了20.30
  3. 结构数组
    我们可以像使用常规数组一样来使用结构数组,原理都是一样的

    根据上面的例子,我创建了inflatable这个结构,就可以创建它的数组了

    1
    inflatable gifts[100];

记住gifts是一个数组而不是结构,像gifts.price这样使用是无效的,gitfs包含每个元素(gifts[0]~gifts[99])都是inflatable的对象,我们可以这样来访问元素:

1
2
gifts[2].name;
gifts[99].price;

初始化结构数组

1
2
3
4
5
inflatable guest[2]=
{
{"Babil",0.5,23.23 }
{"Godzilize",2000,50.50}
};
  1. 共用体

    在日常生活工作中,我们会遇到要储存一个不同类型的值,有时候它是整型、有时候是字符串类型,比如小李的公司每个部门给员工编号,每个部门的编号都不同,有的部门用整型数据给员工编号,而有的部门给员工起个绰号(字符串),这样当我们要把员工数据录入的时候就有麻烦了,所以这时候就要用共用体。

    共用体的声明和结构体一样

    1
    2
    3
    4
    5
    union myUnion
    {
    int ID_int;
    string ID_str;
    };

现在就可以使用myUnion来储存int
变量和string变量了

1
2
3
myUnion mu;
mu.ID_int=045311;
mu.ID_str="令狐冲";

需要注意的是,共用体每次只能储存一个变量,第一次把ID_int初始化为045311,当我再次初始化ID_str的值时,原来的ID_int的内存将被清空,用来储存ID_str的值