[英]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
函數中調用該指針? 一個解釋會很好!
非常感謝你。 另外,值mpg
, speed
也是從我的代碼的另一部分取得的,該部分工作正常。 關於如何解決我現在遇到的問題的說明非常棒!
即使在定義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.