zoukankan      html  css  js  c++  java
  • 【C++】自定义数据类型

    自定义数据类型

    标签:c++


    一、结构体

    定义方法:

    结构名 变量名

    特点:

    • 两个同类型的结构变量可以相互赋值,但是结构变量之间不能使用“<”,“==”等运算符,如果使用则需要对运算符重载
    • 内存分配情况:地址对齐
    • 结构的成员变量可以是任何类型的,包括基本类型、结构体、结构体指针等

    成员访问方式:

    • 通过结构变量名:结构变量名.成员变量名

    • 通过结构体指针:指针->成员变量名 或 (*指针).成员变量

      点运算符的前体是变量名,箭头的是指针(助记:指针很像箭头)

    初始化:

    • 定义时按照成员变量的顺序和格式列举初始化
    • 用另外一个同类型的结构体初始化

    结构数组

    结构名 数组名[数组元素个数]

    指针和动态内存分配:

    指针的用法同一般情况

    动态内存分配:

    StructName *p;
    
    p = new StructName[N];
    

    结构变量作为函数参数:

    • 值传递,需要将实参复制到形参,结构体积大的时候效率很低

    • 地址传递,传递指针

    • 引用传递(c++特有)

    二、联合

    定义方法:

    union 联合名
    
    {
    
    类型名1 成员变量名1;
    
    类型名2 成员变量名2;
    
    ……
    
    }
    

    特点:

    成员变量从相同的起始地址分配内存,对一个成员变量赋值会改变其余成员变量的值

    举例:

    #include<iostream>
    using namespace std;
    union Register
    {
        unsigned int word;
        struct
        {
            unsigned short L;
            unsigned short H;
        }data;
    };
    int main()
    {
        Register AX;
        AX.word = 0x12345678;
        AX.data.H = 0x9999;
        cout<<hex<<AX.word<<" "<<AX.data.H<<" "<<AX.data.L<<endl;
    }
    

    三、枚举

    定义方法:

    enum 枚举类型名{枚举值1,枚举值2,……};

    枚举类型名 变量名;

    作用:

    宏定义的集合

    四、用typedef定义数据类型

    用法:

    typedef 类型名 类型别名;

    作用:

    简化变量类型名

    typedef void(*myFunction)(int n, char c, const char* s);
    myFunction p1;
    myFunction p2;
    
  • 相关阅读:
    java对象的实例化过程
    关键字super
    方法的重写
    继承
    JavaBean
    this关键字
    类的构造方法
    四种访问权限修饰符
    封装和隐藏
    初入博客园——你我共勉,至我的准读者朋友们
  • 原文地址:https://www.cnblogs.com/vinnson/p/13451330.html
Copyright © 2011-2022 走看看