【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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM