typedef 用法總結

2022-03-11 16:01:32 字數 4813 閱讀 9779

typedef 宣告,簡稱 typedef,為現有型別建立乙個新的名字。比如人們常常使用 typedef 來編寫更美觀和可讀的**。所謂美觀,意指 typedef 能隱藏笨拙的語法構造以及平台相關的資料型別,從而增強可移植性和以及未來的可維護性。

在程式設計中使用typedef目的一般有兩個,乙個是給變數乙個易記且意義明確的新名字,另乙個是簡化一些比較複雜的型別宣告。

typedef的使用方法如下:

typedef existing_type new_type_name ;

注意:typedef 並不建立新的型別。它僅僅為現有型別新增乙個同義字。

typedef int size;

typedef unsigned int word;

第乙個宣告定義了乙個char的同義詞,名字為c,你可以在任何需要int的上下文使用size。

第二個宣告定義了乙個unsigned int的同義詞,名字為word,你可以在任何需要int的上下文使用word。

我們可以不用象下面這樣重複定義有 81 個字元元素的陣列:

char line[81]; 

char text[81];

定義乙個 typedef,每當要用到相同型別和大小的陣列時,可以這樣:

typedef char line[81]; 

line text, secondline;

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

typedef char * pstr; 

pstr str = "abc";

int mystrcmp(pstr, pstr);

函式指標一般用於**,例如訊號處理,libcurl等會應用到**。**是比較常用的技術,而**就要涉及函式指標。

當我們的程式中有以下函式:

void printhello(int i);

然後我們要定義乙個函式指標,指向printhello,並且呼叫這個方法,**如下:

void (*pfunc)(int);

pfunc = &printhello;

(*pfunc)(110);

其中void (*pfunc)(int)是宣告乙個函式指標,指向返回值是void,呼叫引數是(int)的函式,變數名是pfunc,pfunc就是函式指標了,以前是函式指標的簡單用法。

大家可以看到,宣告乙個函式指標是比較複雜的,尤其是當你要在多處地方宣告同乙個型別的函式指標變數,**更加複雜,所以有下面簡化的做法:

typedef void (*printhellohandle)(int);

使用**如下:

printhellohandle pfunc;

pfunc = &printhello;

(*pfunc)(110);

以後其他地方的程式需要宣告類似的函式指標,只需要下面**:

printhellohandle pfuncother;

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

大家在看typedef和陣列,指標以及typedef和函式,可能會覺得typedef比較複雜,但是其實typedef 行為有點像 #define 巨集,用其實際型別替代同義字。

請看看下面例子

typedef char * pstr; 

pstr mystr;

**pstr mystr,展開之後就是char * mystr,把mystr,替換為語句typedef char * pstr的pstr,展開之後還是char * mystr。

typedef並不建立新的型別,typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文字替換而已。

這些規則可以應用到typedef和陣列:

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函式指標而已,根本沒有printhellohandle這種型別。

typedef 宣告,簡稱 typedef,為現有型別建立乙個新的名字。比如人們常常使用 typedef 來編寫更美觀和可讀的**。所謂美觀,意指 typedef 能隱藏笨拙的語法構造以及平台相關的資料型別,從而增強可移植性和以及未來的可維護性。

在程式設計中使用typedef目的一般有兩個,乙個是給變數乙個易記且意義明確的新名字,另乙個是簡化一些比較複雜的型別宣告。

typedef的使用方法如下:

typedef existing_type new_type_name ;

注意:typedef 並不建立新的型別。它僅僅為現有型別新增乙個同義字。

typedef int size;

typedef unsigned int word;

第乙個宣告定義了乙個char的同義詞,名字為c,你可以在任何需要int的上下文使用size。

第二個宣告定義了乙個unsigned int的同義詞,名字為word,你可以在任何需要int的上下文使用word。

我們可以不用象下面這樣重複定義有 81 個字元元素的陣列:

char line[81]; 

char text[81];

定義乙個 typedef,每當要用到相同型別和大小的陣列時,可以這樣:

typedef char line[81]; 

line text, secondline;

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

typedef char * pstr; 

pstr str = "abc";

int mystrcmp(pstr, pstr);

函式指標一般用於**,例如訊號處理,libcurl等會應用到**。**是比較常用的技術,而**就要涉及函式指標。

當我們的程式中有以下函式:

void printhello(int i);

然後我們要定義乙個函式指標,指向printhello,並且呼叫這個方法,**如下:

void (*pfunc)(int);

pfunc = &printhello;

(*pfunc)(110);

其中void (*pfunc)(int)是宣告乙個函式指標,指向返回值是void,呼叫引數是(int)的函式,變數名是pfunc,pfunc就是函式指標了,以前是函式指標的簡單用法。

大家可以看到,宣告乙個函式指標是比較複雜的,尤其是當你要在多處地方宣告同乙個型別的函式指標變數,**更加複雜,所以有下面簡化的做法:

typedef void (*printhellohandle)(int);

使用**如下:

printhellohandle pfunc;

pfunc = &printhello;

(*pfunc)(110);

以後其他地方的程式需要宣告類似的函式指標,只需要下面**:

printhellohandle pfuncother;

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

大家在看typedef和陣列,指標以及typedef和函式,可能會覺得typedef比較複雜,但是其實typedef 行為有點像 #define 巨集,用其實際型別替代同義字。

請看看下面例子

typedef char * pstr; 

pstr mystr;

**pstr mystr,展開之後就是char * mystr,把mystr,替換為語句typedef char * pstr的pstr,展開之後還是char * mystr。

typedef並不建立新的型別,typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文字替換而已。

這些規則可以應用到typedef和陣列:

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函式指標而已,根本沒有printhellohandle這種型別。

typedef用法總結

typedef,為現有資料型別建立乙個新的名字。typedef使用最多的就是建立易於記憶的型別名。型別出現在所宣告的變數名字中。例如typedef int size 此處宣告定義了乙個int的同義字,名字為size。主義typedef並不是建立新的型別。它僅僅是為現有型別新增乙個同義字,你可以在任何...

Typedef 用法總結

不管實在c還是c 中,typedef這個詞都不少見,當然出現頻率較高的還是在c 中。typedef與 define有些相似,但更多的是不同,特別是在一些複雜的用法上,就完全不同了,看了網上一些c c 的學習者的部落格,其中有一篇關於typedef的總結還是很不錯,由於總結的很好,我就不加修改的引用過...

typedef用法總結

define 是簡單的字串替換,相比 define,typedef可以用來定義乙個新型別,在c程式中比較常見。下面總結一下typedef的常用方法。1 定義一種型別,方便多多平台使用。如平台一 typedef long double real 平台一 typedef double real 平台一 ...