typedef 函数指针的用法
進入正文:
代碼簡化, 促進跨平臺開發(fā)的目的.
typedef 行為有點像 #define 宏,用其實際類型替代同義字。
不同點:typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文本替換。
用法一:
typedef?int?(*MYFUN)(int, int);?
這種用法一般用在給函數(shù)定義別名的時候
上面的例子定義MYFUN?是一個函數(shù)指針, 函數(shù)類型是帶兩個int 參數(shù), 返回一個int?
在分析這種形式的定義的時候可以用下面的方法:?
先去掉typedef 和別名,?剩下的就是原變量的類型.?
去掉typedef和MYFUN以后就剩:?
int (*)(int, int)
用法二:
typedef給變量類型定義一個別名.
typedef?struct{?
int a;?
int b;?
}MY_TYPE;?
這里把一個未命名結構直接取了一個叫MY_TYPE的別名, 這樣如果你想定義結構的實例的時候就可以這樣:?
MY_TYPE tmp;
?
第二種用法:typedef?原變量類型?別名
簡單的函數(shù)指針的用法
//形式1:返回類型(*函數(shù)名)(參數(shù)表)
char(*pFun)(int);
//typedef?char(*pFun)(int)?? //跟上一行功能等同
/*typedef的功能是定義新的類型。第一句就是定義了一種PTRFUN的類型,并定義這種類型為指向某種函數(shù)的指針,這種函數(shù)以一個int為參數(shù)并返回char類型。*/
char glFun(int a){return;}
void main()
{
pFun =glFun;
(*pFun)(2);
}
第一行定義了一個指針變量pFun.它是一個指向某種函數(shù)的指針,這種函數(shù)參數(shù)是一個int類型,返回值是char類型。只有第一句我們還無法使用這個指針,因為我們還未對它進行賦值。
第二行定義了一個函數(shù)glFun().該函數(shù)正好是一個以int為參數(shù)返回char的函數(shù)。我們要從指針的層次上理解函數(shù)-函數(shù)的函數(shù)名實際上就是一個指針,函數(shù)名指向該函數(shù)的代碼在內存中的首地址。
?
下面是一個例子:
C代碼??運行結果
?? calc(100, 20, +) = 120
?? calc(100, 20, -) = 80
?? calc(100, 20, *) = 2000
?? calc(100, 20, /) = 5
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的typedef 函数指针的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言练习题1
- 下一篇: const char *p,char c