看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): Hi, all 在網路上看到一個特殊的指標宣告 int (*p())[4]; 但我沒辦法理解是什麼意思 原本是想說宣告一個function pointer陣列,有4個元素 每個元素可以去指向其它function 但code寫起來又沒辦法編譯 看不懂這個宣告是什麼意思... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.164.95.27 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1482300457.A.A7B.html ※ 編輯: HowLeeHi (1.164.95.27), 12/21/2016 14:08:06
stupid0319: 4個fun pointer? int fun(void); p[0]=fun;是這樣嗎? 12/21 14:23
Sidney0503: 不是喔 如果是function pointer要這樣宣告 12/21 14:29
Sidney0503: int((*p)()) ; 12/21 14:30
Sidney0503: int (*p())[4]; 是function的宣告 12/21 14:31
Sidney0503: 可在裡面宣告int array[4]; 然後回傳 &array 12/21 14:35
Sidney0503: 抱歉這樣說是錯的 拿到array會不能使用wwwww 12/21 14:37
cutekid: function 裡面回傳一個在 data segment 或 heap 的位址 12/21 14:57
cutekid: 然後用 int(*)[4] 來解讀這個位址 12/21 14:57
boss0405: 此function回傳一個指標,指標類型為大小為4的int陣列 12/21 17:38
boss0405: 不過那個4頂多是讓寫code的人知道回傳類型,因為回傳是p 12/21 17:41
boss0405: ointer所以也不會知道陣列大小 12/21 17:41
salavida: #1EkLIycp 可以看一下這篇 12/21 19:37
kilva: int (*p[4])(); 4個函式指標陣列的宣告 12/21 22:45
lsc36: http://cdecl.org 12/22 09:13