我在这个程序中的两个不同的地方得到了相同的错误,该程序应该生成1d,2d和3d数组并存储值并同时显示它们。 错误:下标需要数组或指针类型/表达式必须具有指向对象的类型 错误是表达式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
}
}
}
//-------------------------------------------------------------------------------------
}
答案 0 :(得分:8)
您使用了变量名c
两次:一次用于数组,第二次用于循环计数器。
答案 1 :(得分:0)
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];
}
}
那应该编译并修复你的问题将来可能有助于使用更有意义的变量名。