繁体   English   中英

将2D数组索引传递给函数?

[英]Pass a 2D Array Index into a Function?

我有一个填充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函数中调用该指针? 一个解释会很好!

非常感谢你。 另外,值mpgspeed也是从我的代码的另一部分取得的,该部分工作正常。 关于如何解决我现在遇到的问题的说明非常棒!

即使在定义float speed speed之前有一个名为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个元素。

您需要定义float car_speed而不是float speed 它将解决您的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM