我有一个填充2D数组的循环,我希望将此填充所创建的值传递给函数,以便对其进行其他计算。我是C ++的初学者,所以明确的解释会有很大帮助。这是我的代码:
for (int car = 1; car <= 27; car++) {
int test[27][3] = {{car, mpg[car], speed[car]}};
float speed = speed[car];
timeGen(speed);
cout << car << "\t" << mpg[car] << "\t" << speed[car] << endl;
}
这是timeGen
函数:
float timeGen(float x)
{
int distance = 50;
float speed = x;
float time = distance/x;
return time;
}
似乎一切都会正常工作,但会发生的是我收到一条错误,说“下标需要数组或指针类型”。我对他们的意思有点困惑。它告诉我创建一个指向这个索引的指针,然后调用timeGen
函数中的指针吗?解释会很棒!
非常感谢你。此外,值mpg
,speed
取自我的代码的另一部分,工作正常。关于如何解决我现在遇到的问题的说明会很棒!
答案 0 :(得分:0)
即使在定义speed
之前有一个名为float speed
的数组,它也会在此定义之后立即超出范围。试试这个:
float Cur_speed = speed[car];
timeGen(Cur_speed);
或
timeGen(speed[car]); // without the float speed
另一件事是,在每次迭代中,您都在创建test
的新实例。看起来你真正想要的是拥有一个test
数组:
int test[27][3];
for (int car = 0; car < 27; car++) {
test[car][0] = car;
test[car][1] = mpg[car];
test[car][2] = speed[car];
确保mpg
是一个包含27个元素的数组,并始终使用0到26之间的索引。speed
数组也是如此。当我们说test[car][0]
时,我们指的是test[car]
的第一个元素,由于您的定义,它总共有3个元素。基本上,行test[car][X] = Y;
执行与test[27][3] = {{car, mpg[car], speed[car]}}
相同的操作,但该语法仅在您首次声明数组时才有效。而你编写的方式用相同的数据初始化所有27个元素。
答案 1 :(得分:0)
您需要定义 float car_speed 而不是 浮动速度 。它将解决您的错误。