0

次のように2つの2D配列の配列を作成しようとしています

与えられた

char twoDArr[2][3] =  {{'a','b','c'},  {'d','e','f'}};

あなたができる

char (*twoDArrP)[3] = twoDArr;

これにより、次の有効な結果が得られます。

cout << "twoDArr: " << twoDArr[1][2] << endl;
cout << "twoDArrP: " << twoDArrP[1][2] << endl;

私の目標は、次のように別の(静的)配列および/またはポインターを作成することです

char (**threeDArr)[3] = {twoDArr, twoDArr}; //doesn't compile 

その値に次のようにアクセスできるようにします。

char val = threeDArr[0][1][2];

明らかに指数が違う

問題は、3D 配列、つまり 2D 配列の配列を宣言する正しい方法は何ですか??

このケースを使用して例を検索しましたが、何も見つからないようです。どんな助けでも大歓迎です。

4

2 に答える 2

1

の配列

char (*twoDArrP)[3]

サイズ 2 は次のように定義できます。

char (*threeDArrP[2])[3]

これはあまり明確ではありません (完全に正しいかどうかさえわかりません)。cdeclを参照してください。

typedefあなたの友達です:

typedef char (*twoDArrP_type)[3];

twoDArrP_type threeDArrP[2] = {twoDArr, twoDArr};

これ:

char (**threeDArr)[3]

あなたが書いたように、配列へのポインタへのポインタです。2D 配列へのポインターではありません。

于 2012-08-09T14:14:21.953 に答える
1

あなたが必要

char (*threeDArr[2])[3] = {twoDArr, twoDArr};

あなたのソリューションでは、「最も内側の」仕様は*配列ではなく、でした。

于 2012-08-09T14:16:34.100 に答える