-1

このプログラムの 2 つの異なる場所で、1 次元、2 次元、3 次元の配列を作成し、値を格納して同時に表示することになっている同じエラーが発生しています。エラー: 添字には配列またはポインター型が必要です / 式にはオブジェクトへのポインター型が必要です エラーは式 c[r][c][depth] に対するものです

#include<iostream>
using namespace std;
#define ROW 5
#define COL 5
 #define DEPTH 5

int main()
{
int *a;           // 1d array
a=new int [COL];

int (*b) [COL];          //2d array
b=new int [ROW][COL];

int (*c)[ROW][COL];
c=new int [ROW][COL][DEPTH]; // 3d array


//---------------------------------------------------------------------------------



// storing values in the arrays:

for(int i=0;i<COL;i++)
{
    a[i]=i+2;
    cout << a[i];
}

// 2d array
for(int r=0;r<ROW;r++)
{
    for(int c=0;c<COL;c++)
    {
        b[r][c]=r+c+2;
        cout << b[r][c];
    }
}

// 3d array
for(int r=0;r<ROW;r++)
{
    for(int c=0;c<COL;c++)
    {
        for(int depth=0;depth<DEPTH;depth++)
        {
            c[r][c][depth]=r+c+depth+2;             //error
            cout << c[r][c][depth];                 //same error
        }
    }

}


//-------------------------------------------------------------------------------------    


}
4

2 に答える 2

8

変数名cを 2 回使用しました。1 回目は配列用、2 回目はループ カウンター用です。

于 2012-04-09T13:17:04.447 に答える
0

ハワードは正しい。ネストされた for ループで c を整数として再宣言しますfor(int c=0;c<COL;c++)

c をループのスコープの int として再宣言しました。ループには別の変数名を指定する必要があります。

元:

for(int k=0;k<COL;k++)
{
    for(int depth=0;depth<DEPTH;depth++)
    {
        c[r][k][depth]=r+k+depth+2;             
        cout << c[r][k][depth];                 
    }
}

これにより、問題がコンパイルされて修正されるはずです。将来、より意味のある変数名を使用すると役立つ場合があります。

于 2012-04-09T14:54:31.730 に答える