2016-07-17 7 views
1

この質問はいくつかの点で尋ねられますが、理解が難しいと感じています。関数を宣言して2次元配列を返します

int (*q)[3][4] - >qは、3行4列の2次元配列へのポインタです。

ここで、関数から2次元配列を返したいとします。

pointer-to-2d-array func() { 

    static 2 day array; 

    return ; 
} 

基本的には、私の機能の署名となるべきものです。私は以下のような多くの場所を見たことがありません。

int (*fun2())[column]; 

署名の説明/理解が難しいと感じています。 誰も私にこれを助けてくれますか?

+0

質問をする前に[検索](https://stackoverflow.com/search?q=)を使用してください。 – 2501

+0

'void func(int(* p)[] [COL_SIZE])'それを行う必要があります。行サイズはオプションで、自動的に評価されることに注意してください。配列がポインタとして関数に渡されると、呼び出し先の変更も呼び出し元に反映されます。したがって戻り値の型としての 'void'は理にかなっています。 – sjsam

答えて

1

一つの単純なアプローチは、typedefを使用することである。

typedef int (*ThreeByFourPtr)[3][4]; 

ThreeByFourPtr fun() { 
    static int res[3][4]= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 
    return &res; 
} 

利点は、シンタックスは、タイプ名が変数名を置き換えると、そのタイプのポインタ宣言の反映ということです。

関連する問題