在網上搜尋函式指標,看到乙個例子。開始沒看懂,想放棄,可是轉念一想,這個用法遲早要弄懂的,現在多花點時間看懂它,好過以後碰到了要再花一倍時間來弄懂它。其實很多時候都是這樣,如果每次到難一點的內容,總想著下次我再來解決它,那就永遠也學不到東西。
後面那個例子加了注釋,是我對這種用法的理解,希望對新手有所幫助。
進入正文:
**簡化, 促進跨平台開發的目的.
typedef 行為有點像 #define 巨集,用其實際型別替代同義字。
不同點:typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文字替換。
用法一:
typedef
int(*myfun)(int, int);
這種用法一般用在給函式定義別名的時候
上面的例子定義myfun
是乙個函式指標, 函式型別是帶兩個int 引數, 返回乙個int
在分析這種形式的定義的時候可以用下面的方法:
先去掉typedef 和別名,剩下的就是原變數的型別.
去掉typedef和myfun以後就剩:
int (*)(int, int)
用法二:
typedef給變數型別定義乙個別名.
typedefstructmy_type;
這裡把乙個未命名結構直接取了乙個叫my_type的別名, 這樣如果你想定義結構的例項的時候就可以這樣:
my_type tmp;
第二種用法:typedef原變數型別別名
簡單的函式指標的用法
//形式1:返回型別(*函式名)(參數列)
char(*pfun)(int);
//typedefchar(*pfun)(int) //跟上一行功能等同
/*typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int為引數並返回char型別。*/
char glfun(int a)
void main()
pfun =glfun;
(*pfun)(2);
第一行定義了乙個指標變數pfun.它是乙個指向某種函式的指標,這種函式引數是乙個int型別,返回值是char型別。只有第一句我們還無法使用這個指標,因為我們還未對它進行賦值。
第二行定義了乙個函式glfun().該函式正好是乙個以int為引數返回char的函式。我們要從指標的層次上理解函式-函式的函式名實際上就是乙個指標,函式名指向該函式的**在記憶體中的首位址。
typedef 定義函式指標
typedef 返回型別 新型別 參數列 typedef char ptrfun int ptrfun pfun char glfun int a void main typedef的功能是定義新的型別。第一句就是定義了一種ptrfun的型別,並定義這種型別為指向某種函式的指標,這種函式以乙個int...
使用typedef定義函式指標
形式1 返回型別 函式名 參數列 cpp view plain copy char pfun int char glfun inta void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個int型,返回值是char型...
使用typedef定義函式指標
關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...