[爆卦]Typedef 指標 函數是什麼?優點缺點精華區懶人包

為什麼這篇Typedef 指標 函數鄉民發文收入到精華區:因為在Typedef 指標 函數這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者kilva (嗡嗡)看板C_and_CPP標題[問題] typedef對函數指標的用法時間Sun...


這是我在《透視C語言指標》這一書中看到的。

書中第76頁型別定義了一函數指標,其定義方法如下:

typedef int (*fptr)(int, int);

上面的式子可定義出fptr這個新的型別(為一參數為兩個整數,回傳值為整數
的函數指標。)

這個型別可用來宣告、傳入及傳回函數指標,其中傳入函數指標看起來就像

JavaScript中傳入函數的用法一樣,感覺蠻神奇的。(差別只在於C語言對型

別的要求還是比較強。)

請問,上面typedef的用法似乎和以前看過的用法不太一樣,可以想成是與函

數指標有關的特殊用法嗎?或是有其他更一般性的規範?


謝謝。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.183.244
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1431866115.A.53E.html
※ 編輯: kilva (114.35.183.244), 05/17/2015 20:38:03
bibo9901: google "c right-left rule" 05/17 20:43
uranusjr: 一般性規範樓上講了, 實務上請愛用 http://cdecl.org 05/17 20:45

感謝回答,我上網查了一下後,發現我錯在哪裡了。

原本,我學的typedef用法為

typedef 資料型別 自訂名稱;

但這反而是最簡單時的特例,真正的用法為

typedef 宣告;

如宣告一字串陣列 char *name[];

加上typedef後就變成了 typedef char *name[];

此處的name就成了一個新的字串陣列型別。

同理可推,函數指標的宣告為 int (*fptr)(int, int);

加上typedef後就變成了typedef int (*fptr)(int, int);

此處的fptr就成了一個新的函數指標型別。
※ 編輯: kilva (114.35.183.244), 05/17/2015 21:17:11
EdisonX: 你的後半段還是在講 自定義 , 而不是宣告 , 只是自定義 05/17 21:18
EdisonX: 的資料型別變得複雜一點點而已。 05/17 21:18
suhorng: 可惜這個函數指標比 javascript (or any function lang) 05/17 22:00
suhorng: 的函數傳來傳去弱多了 05/17 22:00

你可能也想看看

搜尋相關網站