[問題] 請問指標的宣告...

作者: HowLeeHi (處處留心皆正妹)   2016-12-21 14:07:30
開發平台(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寫起來又沒辦法編譯
看不懂這個宣告是什麼意思...
作者: stupid0319 (徵女友)   2016-12-21 14:23:00
4個fun pointer? int fun(void); p[0]=fun;是這樣嗎?
作者: Sidney0503 (Sidney0503)   2016-12-21 14:29:00
不是喔 如果是function pointer要這樣宣告int((*p)()) ;int (*p())[4]; 是function的宣告可在裡面宣告int array[4]; 然後回傳 &array抱歉這樣說是錯的 拿到array會不能使用wwwww
作者: cutekid (可愛小孩子)   2016-12-21 14:57:00
function 裡面回傳一個在 data segment 或 heap 的位址然後用 int(*)[4] 來解讀這個位址
作者: boss0405 (boss)   2016-12-21 17:38:00
此function回傳一個指標,指標類型為大小為4的int陣列不過那個4頂多是讓寫code的人知道回傳類型,因為回傳是pointer所以也不會知道陣列大小
作者: salavida (席阿)   2016-12-21 19:37:00
#1EkLIycp 可以看一下這篇
作者: kilva (嗡嗡)   2016-12-21 22:45:00
int (*p[4])(); 4個函式指標陣列的宣告
作者: lsc36 (lsc36)   2016-12-22 09:13:00

Links booklink

Contact Us: admin [ a t ] ucptt.com