2012-07-10 50 views
3

可能重複:
How to understand complicated function declarations?瞭解一些瘋狂的C/C++聲明

考慮:

char (*(*x())[5])() 

如何剖析這體現在哪裏?

我認爲它是一個函數,它返回一個大小爲5的數組,它的成員是指向不接收輸入並返回字符的函數的指針。

我對不對?

+6

退房http://cdecl.org/爲非平凡的聲明。 – hmjd 2012-07-10 09:17:53

+0

將x聲明爲函數返回指向數組5的指向返回char的函數的指針 - http://cdecl.org/ – Artefact2 2012-07-10 09:17:56

+0

不,它是一個函數,返回一個指向包含函數的五個指針數組的指針(C:unspecified parameters | C++ :無參數)並返回一個字符。函數不允許以C或C++返回數組。搜索重複... – 2012-07-10 09:18:09

回答

11

搜索 「左右法則」

在你的情況下,它應該是:

  x   : x is a 
     x()  : function 
     *x()  : returning pointer to 
     (*x())[5] : a 5-element array of 
     *(*x())[5] : pointer to 
    (*(*x())[5])() : function 
char (*(*x())[5])() : returning char 
10

我在棧上看到很多奇怪的聲明 這些天溢出。

當我懶惰,我使用cdecl.org

「聲明x作爲函數返回指針的指針陣列5起作用返回炭」

當不,有clockwise spiral rule< - 這是真棒