作为c++的初学者,我使用c++入门作为我的教科书。我刚讲到多维数组部分。这是书中关于给这样的数组赋值的代码,但是我不太明白…
constexpr size_t rowCnt = 3, colCnt = 4;
int ia[rowCnt][colCnt];
for (size_t i = 0; i != rowCnt; ++i) {
for (size_t j = 0; j != colCnt; ++j) {
ia[i][j] = i * colCnt + j;
}
}
ia[i][j] = i * colCnt + j;
如何赋值给数组?
访问元素号"在数组中调用array[x]对吧?为了给索引赋值你调用array[x] = "something"
在多维数组中,元素"x"是另一个数组,因此:
ai[i][j]变成(ai array at index i)[j] .
我希望你能理解。
等号右边的赋值是不相关的,在你的例子中因为循环你会得到像
这样的东西0, 1, 2
3、4、5
6, 7, 8
那么您有一个三行数组,每行由四列数组组成。
将第一行的第一列地址设为"ia[0][0]"要处理第一行中的第二列,请使用"ia[0][1]"。要处理最后一行的最后一列,请使用"ia[2][3]"。
编译器需要计算您使用"i"要求的行地址。变量:"ia[我]";然后使用"j"计算列在该行中的位置。变量:"ia[我][j]"。
从你的代码
int ia[rowCnt][colCnt];
这和这个差不多int是[3][4];这意味着您的数组可以在行中保存3个项(值),在列中保存4个项。
然后使用一个for循环来遍历数组的每个索引,这是一个nasted循环,因此第一个循环用于行,第二个循环用于列。
第一个循环
for(size_t i = 0; i != rowCnt; i++)
第一个循环是用来循环并增加i的值,直到它是rowCnt;(3)
第二个循环也是如此。
for(size_t j = 0; j != colCnt; j++)
还要记住,inner循环总是执行完,而outer循环只执行一次。
这意味着当i = 0且j = 0时;[i][j] = i * colnent + j;这意味着。在第一行和第一列中,给它的值i * collent + j;
一直这样,直到所有的值都输出.
我不确定你是否理解,但我希望我已经回答了你的问题。