C語言之typedef函式指標用法

2021-07-10 08:40:53 字數 1592 閱讀 6273

c語言之typedef函式指標用法

形式1:返回型別(*函式名)(參數列) 

[cpp]view plain

copy

char (*pfun)(int);   

char glfun(int a)   

void main()     

第一行定義了乙個指標變數pfun。首先我們根據前面提到的「形式1」認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對它進行賦值。

第二行定義了乙個函式glfun()。該函式正好是乙個以int為引數返回char的函式。我們要從指標的層次上理解函式——函式的函式名實際上就是乙個指標,函式名指向該函式的**在記憶體中的首位址

然後就是main()函式了,它的第一句您應該看得懂了——它將函式glfun的位址賦值給變數pfun。main()函式的第二句中「*pfun」顯然是取pfun所指向位址的內容,當然也就是取出了函式glfun()的內容,然後給定引數為2。

形式1:typedef  返回型別(*新型別)(參數列)

[cpp]view plain

copy

typedef

char (*ptrfun)(int);   

ptrfun pfun;   

char glfun(int a)   

void main()   

typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。後面就可以像使用int,char一樣使用ptrfun了。

第二行的**便使用這個新型別定義了變數pfun,此時就可以像使用形式1一樣使用這個變數了。

[cpp]view plain

copy

#include 

#include 

typedef

int (*fp_calc)(int,int);//定義乙個函式指標型別

int add(int a, int b)  

int sub(int a, int b)  

int mul(int a, int b)  

int div(int a, int b)  

//定義乙個函式,引數為op,返回乙個指標,該指標型別為擁有兩個int引數、

//返回型別為int的函式指標。它的作用是根據操作符返回相應函式的位址

fp_calc calc_func(char op)  

return null;  

}  //s_calc_func為函式,它的引數是 op,   

//返回值為乙個擁有兩個int引數、返回型別為int的函式指標  

int (*s_calc_func(char op)) (int , int)  

//終端使用者直接呼叫的函式,該函式接收兩個int整數,

//和乙個算術運算子,返回兩數的運算結果

int calc(int a, int b, char op)  

void main()    

參考:

C語言之typedef定義函式指標 十三

一 typedef兩種用法 1.定義已有型別的別名 typedef 型別 定義名 栗子 typedef char pchar pchar s1,s2,s3 注意 s1 s2 s3都被定義為char 型別.2.建立乙個新的型別 typedef 返回值型別 新型別名 引數列表 栗子 typedef in...

C語言之typedef詳解

typedef可以看作type define的縮寫,顧名思義就是型別定義,也就是說它只是給已有的型別重新定義了乙個方便使用的別名,並沒有產生新的資料型別。typedef的使用與巨集定義define有些許的相似,但兩者又有以下不同 1.與 define不同,typedef給出的符號名稱僅限於對型別,而...

C語言之typedef詳解

typedef可以看作type define的縮寫,顧名思義就是型別定義,也就是說它只是給已有的型別重新定義了乙個方便使用的別名,並沒有產生新的資料型別。typedef的使用與巨集定義define有些許的相似,但兩者又有以下不同 1.與 define不同,typedef給出的符號名稱僅限於對型別,而...