6

重複の可能性:
複雑な関数宣言を理解するには?

検討:

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

この表現をどのように分析しますか?

サイズ5の配列を返す関数だと思います。そのメンバーは、入力を受け取らず、charを返す関数へのポインタです。

私は正しいですか?

4

2 に答える 2

14

「左右の法則」で検索

あなたの場合、それは次のようになります。

         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
于 2012-07-10T09:21:31.690 に答える
12

最近、Stack Overflow で奇妙な宣言がたくさん見られます。

怠け者のときは、cdecl.orgを使用します。

「char を返す関数へのポインタの配列 5 へのポインタを返す関数として x を宣言します」

そうでない場合は、時計回りのスパイラル ルールがあります。<-それは素晴らしいです

于 2012-07-10T09:20:15.970 に答える