[英]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.