簡體   English   中英

為什么我不能在這個 function (C++) 的循環之外定義一個計數變量

[英]Why can't I define a count variable outside of my loop in this function (C++)

這是一個非常基本的問題,我知道,但我正在解決以下簡單的練習:

my2Darray 是一個二維數組,包含 nRows 行和 nCols 列。 編寫一個 function 對每一列中的所有元素求和,並將它們返回到一個名為 totalsByColumn 的數組中。 編寫第二個 function 對每一行中的所有元素求和,並將它們返回到一個名為 totalsByRow 的數組中。

我的代碼現在工作得很好,但我很好奇為什么下面的 function 不起作用:

void colSum (int arrayArg[nRows][nCols]) {

    static int sumofCols[nCols] = {};
    int rowcount = 0;

    for (int i = 0; i < nCols; i++) {
        for ( ; rowcount < nRows; rowcount++) {
            sumofCols[i] += arrayArg[rowcount][i];
        }
        cout << sumofCols[i] << endl;
    }
}

為什么我不能在嵌套for循環之外創建這個rowcount變量? 只有我用作 function 參數的數組中兩行的第一列被匯總到sumofCols[0]中,這導致sumofCols[1]等於 0。當我將rowcount設置在第一個的邊界內for循環或第二個循環,迭代按預期工作。

for (int rowcount = 0; rowcount < nRows; rowcount++)

這是我必須使用的代碼。

我只是想確保我 100% 了解我在做什么,因為 C++ 對於像我這樣的初學者來說可能會很混亂。

哦,我確實更改了這個 function 以返回一個int*值,因為我基本上是根據練習的需要將sumofCols分配給另一個數組。

因為在第一次迭代之后 rowCount 將等於 nRows。 對於外循環的第二次迭代,它不會重新初始化為 0,因此for (; rowcount < nRows; rowcount++)循環中的代碼不起作用。 在內部循環的迭代之后,您必須將 rowCount 的值重置為 0。 如果您真的想在循環之外聲明 rowCount,您可以執行以下操作,

void colSum (int arrayArg[nRows][nCols]) {

    static int sumofCols[nCols] = {};
    int rowcount = 0;

    for (int i = 0; i < nCols; i++) {
        for ( ; rowcount < nRows; rowcount++) {
            sumofCols[i] += arrayArg[rowcount][i];
        }
        cout << sumofCols[i] << endl;
        rowCount = 0; // Here we are resetting the value to 0.
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM