簡體   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