用typedef自定義的資料型別
阿新 • • 發佈:2018-11-14
嚴格說,它不是一種新型別,使用typedef一般用來達到以下幾個目的:
1,用來定義一種型別的別名,比如說一個型別名稱特別長,為了書寫方便和便於程式碼的閱讀,實現別名功能(複雜名字簡單化),
typedef char* PCHAR;
PCHAR pa, pb;
struct Hello_hi_bye //假設有這麼2b的名字,這麼複雜 { int b; float c; }//可以簡化 typedef hello_hi_bye ty; //如此以來就可以減輕寫程式碼的負擔 hello_hi_bye a; hello_hi_bye b; hello_hi_bye c; //可以改寫為 ty a; ty b; ty c; //恩輕鬆多了!
2,若是在一個struct或者class裡面使用的話,可以達到一種比較奇妙的效果,叫儲存一種型別,有點抽象,以例子解釋
#include<iostream>
struct Test
{
typedef int Aa; //Aa
float a;
int b;
};
int main()
{
Test::Aa aa = 5; //其實 aa就是int 的型別
std::cout<<aa<<std::endl; //輸出5
return 0;
}
表面看,貌似多此一舉,直接int a=5不就可以了嗎?再看下面例子
struct Test
{
typedef ClassA Aa; //Aa
ClassA a;
int b;
};
這樣的話,就可以實現一個新的功能,通過變數名字找到它的型別名
比如,我知道有個變數Test x, 我想要拿到x.a, 但是我不知道x.a是什麼型別的,寫程式碼的時候需要定義一個和x.a一樣型別的變數y=來接受這個x.a, 現在的問題就是把y宣告成什麼型別呢?那麼我們就可以這樣寫,
Test::Aa y = x.a;