2011-04-06 144 views
4
int (*rdPtrList[4])(unsigned int addr, unsigned int data); 

上面聲明瞭返回int並帶兩個unsigned int的函數的指針大小爲4的數組。我想創建一個指向這個數組的指針。這可能在C嗎?指向函數指針數組的指針

回答

6

啊,棘手的棘手!

認爲這個工程

int (*(*rdPtrList)[4])(unsigned int addr, unsigned int data); 

因爲編譯器告訴我_countof(*rdPtrList)是4


(我希望你能只說int function(unsigned int addr, unsigned int data)[4]*就像你可以在d,它是這麼多更具可讀性:它將是一個「函數數組指針」。)

+0

這編譯,我將不得不回到你是否它的工作! – jliu83 2011-04-06 22:10:42

+0

@ jliu83:哈哈好吧! (它可能是。:P) – Mehrdad 2011-04-06 22:11:24

+0

驗證您正確聲明指針的正確方法是將數組地址指定給它,即'ptr_to_fixed_length_function_array =&array_of_functions;'。如果類型不正確,你的編譯器應該抱怨這個任務。 – 2015-07-07 23:46:06

4

試試這個:

typedef int(*rdPtrList_t[4])(unsigned int addr, unsigned int data); 
rdPtrList_t *ptrToArray; 
+0

這工作!什麼是不使用typedef的語法?如果沒有typedef,甚至可能嗎? – jliu83 2011-04-06 22:09:30

+1

@Idanko:兩種解決方案都可以工作。不過我更喜歡不使用typedef。謝謝。 – jliu83 2011-04-07 01:09:59

13

離開了參數牢記以下更易於閱讀:

 
     p   -- p 
     *p   -- is a pointer 
     (*p)[4]  -- to a 4-element array 
    *(*p)[4]  -- of pointers 
    (*(*p)[4])() -- to functions 
int (*(*p)[4])(); -- returning int.