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

看板C_and_CPP (C/C++)作者 (處處留心皆正妹)時間9年前 (2016/12/21 14:07), 9年前編輯推噓6(608)
留言14則, 7人參與, 最新討論串1/1
開發平台(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

12/21 14:23, , 1F
4個fun pointer? int fun(void); p[0]=fun;是這樣嗎?
12/21 14:23, 1F

12/21 14:29, , 2F
不是喔 如果是function pointer要這樣宣告
12/21 14:29, 2F

12/21 14:30, , 3F
int((*p)()) ;
12/21 14:30, 3F

12/21 14:31, , 4F
int (*p())[4]; 是function的宣告
12/21 14:31, 4F

12/21 14:35, , 5F
可在裡面宣告int array[4]; 然後回傳 &array
12/21 14:35, 5F

12/21 14:37, , 6F
抱歉這樣說是錯的 拿到array會不能使用wwwww
12/21 14:37, 6F

12/21 14:57, , 7F
function 裡面回傳一個在 data segment 或 heap 的位址
12/21 14:57, 7F

12/21 14:57, , 8F
然後用 int(*)[4] 來解讀這個位址
12/21 14:57, 8F

12/21 17:38, , 9F
此function回傳一個指標,指標類型為大小為4的int陣列
12/21 17:38, 9F

12/21 17:41, , 10F
不過那個4頂多是讓寫code的人知道回傳類型,因為回傳是p
12/21 17:41, 10F

12/21 17:41, , 11F
ointer所以也不會知道陣列大小
12/21 17:41, 11F

12/21 19:37, , 12F
#1EkLIycp 可以看一下這篇
12/21 19:37, 12F

12/21 22:45, , 13F
int (*p[4])(); 4個函式指標陣列的宣告
12/21 22:45, 13F

12/22 09:13, , 14F
12/22 09:13, 14F
文章代碼(AID): #1OMXmffx (C_and_CPP)
文章代碼(AID): #1OMXmffx (C_and_CPP)