[問題] typedef對函數指標的用法

看板C_and_CPP (C/C++)作者 (嗡嗡)時間9年前 (2015/05/17 20:35), 9年前編輯推噓0(006)
留言6則, 4人參與, 最新討論串1/1
這是我在《透視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

05/17 20:43, , 1F
google "c right-left rule"
05/17 20:43, 1F

05/17 20:45, , 2F
一般性規範樓上講了, 實務上請愛用 http://cdecl.org
05/17 20:45, 2F
感謝回答,我上網查了一下後,發現我錯在哪裡了。 原本,我學的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

05/17 21:18, , 3F
你的後半段還是在講 自定義 , 而不是宣告 , 只是自定義
05/17 21:18, 3F

05/17 21:18, , 4F
的資料型別變得複雜一點點而已。
05/17 21:18, 4F

05/17 22:00, , 5F
可惜這個函數指標比 javascript (or any function lang)
05/17 22:00, 5F

05/17 22:00, , 6F
的函數傳來傳去弱多了
05/17 22:00, 6F
文章代碼(AID): #1LM8i3K- (C_and_CPP)
文章代碼(AID): #1LM8i3K- (C_and_CPP)