• 结构


    比数组更灵活,可以存储多个类型的数据。

    结构式用户定义的类型,结构声明定义了这种类型的数据属性。首先定义结构描述,然后描述创建结构变量。

    一般结构声明放在放在main中,或main前面(外部声明)。通常外部声明。

    还可以使用赋值运算符 = 将结构赋给另一个同类型的结构。

    声明

    1 struct inflatable
    2 {
    3     char name[20];
    4     float volume;
    5     double price;
    6 };

    初始化

    inflatable guest = 
    {
        "bob", //name
        1.88, //volume
        29.99 //price
    };
    
    inflatable guest  {"bob", 1.88, 29.99}//=可选
    
    inflatable mayor {}; //各个成员默认设置为0

    使用类似于类的初始化方法,赋初值

    1 Definition for a binary tree node.
    2 struct TreeNode {
    3     int val;
    4     TreeNode *left;
    5     TreeNode *right;
    6     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    7 };

    相当于将x赋给val,将NULL赋给left和right。

    结构体中的位字段

    c++允许指定占用特定位数bit的结构成员。字段类型应为整型或枚举型,接下来是冒号,后面一个数字是指定的使用位数。每个成员都被称为位字段。

    1 struct torgle
    2 {
    3     unsigned int SN : 4; //4 bits for SN value_comp
    4     unsigned int : 4;//可以使用没有名称的字段提供间距
    5     bool goodIn: 1;
    6 };

    可以使用标准的结构表示法来访问位字段。

    1 torgle tr = {14, true , false};
    2 tr.goodIn;//可以成员运算符来访问的

    创建对象

    1 struct inflatable bat;//c风格
    2 inflatable bat;//c++风格

    可以同时完成定义结构和创建变量的工作,只需将变量名放在结束括号的后面即可。

     1 struct perks
     2 {
     3     int key_number;
     4     char car[10];
     5 }mr_smith, ms_jones; //两个变量名
     6 
     7 初始化方式创建
     8 struct perks
     9 {
    10     int key_number;
    11     char car[10];
    12 }mr_glitz = 
    13 {
    14     7,
    15     "hello"
    16 };

    声明没有名称的结构并创建变量

    1 struct 
    2 {
    3     int x;
    4     int y;
    5 }position;

    结构数组:创建元素为结构的数组

    1 inflatable gifts[100];
    2 //也可以使用成员运算符(.)来访问
    3 gifts[2].price;

    使用new创建动态结构

    动态意味着是在运行时,而不是编译时分配的。

    1 struct things
    2 {
    3     int good;
    4     int bad;
    5 };
    6 
    7 //创建一个未命名的things类型,并将其地址赋给一个指针。
    8 things* ps = new things;

    ps是指向结构的指针,所以ps->good就表示该结构的成员good,等同于(*ps).good

  • 相关阅读:
    字母次数
    hdu 2051 Bitset(十进制到二进制)
    练习1升级
    实验一写能自动生成小学四则运算题目的程序
    TCP/IP bad check sum
    Lua GC 之 Ephemeron
    RHEL6下VNC安装和配置
    qpid安装
    关闭中国电信无线客户端自动更新
    Python GC
  • 原文地址:https://www.cnblogs.com/pacino12134/p/10973234.html
Copyright © 2020-2023  润新知