作者HowLeeHi (處處留心皆正妹)
看板C_and_CPP
標題[問題] 請問指標的宣告...
時間Wed Dec 21 14:07:30 2016
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1482300457.A.A7B.html
※ 編輯: HowLeeHi (1.164.95.27), 12/21/2016 14:08:06
1F:→ stupid0319: 4個fun pointer? int fun(void); p[0]=fun;是這樣嗎? 12/21 14:23
2F:推 Sidney0503: 不是喔 如果是function pointer要這樣宣告 12/21 14:29
3F:→ Sidney0503: int((*p)()) ; 12/21 14:30
4F:→ Sidney0503: int (*p())[4]; 是function的宣告 12/21 14:31
5F:→ Sidney0503: 可在裡面宣告int array[4]; 然後回傳 &array 12/21 14:35
6F:→ Sidney0503: 抱歉這樣說是錯的 拿到array會不能使用wwwww 12/21 14:37
7F:推 cutekid: function 裡面回傳一個在 data segment 或 heap 的位址 12/21 14:57
8F:→ cutekid: 然後用 int(*)[4] 來解讀這個位址 12/21 14:57
9F:推 boss0405: 此function回傳一個指標,指標類型為大小為4的int陣列 12/21 17:38
10F:推 boss0405: 不過那個4頂多是讓寫code的人知道回傳類型,因為回傳是p 12/21 17:41
11F:→ boss0405: ointer所以也不會知道陣列大小 12/21 17:41
12F:推 salavida: #1EkLIycp 可以看一下這篇 12/21 19:37
13F:→ kilva: int (*p[4])(); 4個函式指標陣列的宣告 12/21 22:45