免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C/C++ typedef用法

引言

typedef 聲明,簡(jiǎn)稱 typedef,為現(xiàn)有類型創(chuàng)建一個(gè)新的名字。比如人們常常使用 typedef 來(lái)編寫更美觀和可讀的代碼。所謂美觀,意指 typedef 能隱藏笨拙的語(yǔ)法構(gòu)造以及平臺(tái)相關(guān)的數(shù)據(jù)類型,從而增強(qiáng)可移植性和以及未來(lái)的可維護(hù)性。
在編程中使用typedef目的一般有兩個(gè),一個(gè)是給變量一個(gè)易記且意義明確的新名字,另一個(gè)是簡(jiǎn)化一些比較復(fù)雜的類型聲明。

typedef的使用方法如下:

typedef existing_type new_type_name ;

注意:typedef 并不創(chuàng)建新的類型。它僅僅為現(xiàn)有類型添加一個(gè)同義字。

typedef的最簡(jiǎn)單使用

typedef int size;
typedef unsigned int WORD;


第一個(gè)聲明定義了一個(gè)char的同義詞,名字為C,你可以在任何需要int的上下文使用size。
第二個(gè)聲明定義了一個(gè)unsigned int的同義詞,名字為WORD,你可以在任何需要int的上下文使用WORD。

typedef和數(shù)組,指針

我們可以不用象下面這樣重復(fù)定義有 81 個(gè)字符元素的數(shù)組:

char line[81]; 
char text[81];

定義一個(gè) typedef,每當(dāng)要用到相同類型和大小的數(shù)組時(shí),可以這樣:

typedef char Line[81]; 
Line text, secondline;

同樣,可以象下面這樣隱藏指針語(yǔ)法:

typedef char * pstr; 
pstr str = "abc";
int mystrcmp(pstr, pstr);

typedef和函數(shù)

函數(shù)指針一般用于回調(diào),例如信號(hào)處理,libcurl等會(huì)應(yīng)用到回調(diào)。回調(diào)是比較常用的技術(shù),而回調(diào)就要涉及函數(shù)指針。
當(dāng)我們的程序中有以下函數(shù):

void printHello(int i);

然后我們要定義一個(gè)函數(shù)指針,指向printHello,并且調(diào)用這個(gè)方法,代碼如下:

void (*pFunc)(int);
pFunc = &printHello;
(*pFunc)(110);

其中void (*pFunc)(int)是聲明一個(gè)函數(shù)指針,指向返回值是void,調(diào)用參數(shù)是(int)的函數(shù),變量名是pFunc,pFunc就是函數(shù)指針了,以前是函數(shù)指針的簡(jiǎn)單用法。
大家可以看到,聲明一個(gè)函數(shù)指針是比較復(fù)雜的,尤其是當(dāng)你要在多處地方聲明同一個(gè)類型的函數(shù)指針變量,代碼更加復(fù)雜,所以有下面簡(jiǎn)化的做法:

typedef void (*PrintHelloHandle)(int);

使用代碼如下:

PrintHelloHandle pFunc;
pFunc = &printHello;
(*pFunc)(110);

以后其他地方的程序需要聲明類似的函數(shù)指針,只需要下面代碼:

PrintHelloHandle pFuncOther;

這樣,我們的代碼就變得更加簡(jiǎn)潔易懂。

typedef心得

大家在看typedef和數(shù)組,指針以及typedef和函數(shù),可能會(huì)覺得typedef比較復(fù)雜,但是其實(shí)typedef 行為有點(diǎn)像 #define 宏,用其實(shí)際類型替代同義字。
請(qǐng)看看下面例子

typedef char * pstr; 
pstr mystr;

代碼pstr mystr,展開之后就是char * mystr,把mystr,替換為語(yǔ)句typedef char * pstr的pstr,展開之后還是char * mystr。
typedef并不創(chuàng)建新的類型,typedef 在編譯時(shí)被解釋,因此讓編譯器來(lái)應(yīng)付超越預(yù)處理器能力的文本替換而已。
這些規(guī)則可以應(yīng)用到typedef和數(shù)組:

typedef char Line[81];
Line text;

把text替換為typedef char Line[81]的Line,展開之后就是

char text[81]; 


也可以應(yīng)用到最復(fù)雜的typedef和指針

typedef void (*PrintHelloHandle)(int);
PrintHelloHandle pFunc;

將pFunc替換typedef void (*PrintHelloHandle)(int),展開之后就是

void (*pFunc)(int);

其實(shí)就是聲明一個(gè)pFunc函數(shù)指針而已,根本沒有PrintHelloHandle這種類型。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VC知識(shí)庫(kù)文章 - 使用 typedef 抑制劣質(zhì)代碼
typedef的用法
typedef用法分析
C語(yǔ)言typedef:給類型起一個(gè)別名
C語(yǔ)言中結(jié)構(gòu)體struct編寫的一些要點(diǎn)解析
typedef詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服