久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C/C++ typedef用法

 herowuking 2015-06-04

引言

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

typedef的使用方法如下:

typedef existing_type new_type_name ;

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

typedef的最簡單使用

typedef int size;
typedef unsigned int WORD;


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

typedef和數(shù)組,指針

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

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

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

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

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

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

typedef和函數(shù)

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

void printHello(int i);

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

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

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

typedef void (*PrintHelloHandle)(int);

使用代碼如下:

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

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

PrintHelloHandle pFuncOther;

這樣,我們的代碼就變得更加簡潔易懂,。

typedef心得

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

typedef char * pstr; 
pstr mystr;

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

typedef char Line[81];
Line text;

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

char text[81]; 


也可以應用到最復雜的typedef和指針

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

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

void (*pFunc)(int);

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多