1. 程式人生 > >用typedef自定義的資料型別

用typedef自定義的資料型別

嚴格說,它不是一種新型別,使用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;