在运行时初始化2D int数组 我从C++的书中得到了下面的代码,我无法理解初始化是如何工作的。
从我所看到的,有一个外循环通过行循环,和内循环 在柱子上循环。但我不理解的是数组中的赋值在运行时初始化2D int数组 我从C++的书中得到了下面的代码,我无法理解初始化是如何工作的。,c++,arrays,initialization,declaration,multidimensional-array,C++,Arrays,Initialization,Declaration,Multidimensional Array,从我所看到的,有一个外循环通过行循环,和内循环 在柱子上循环。但我不理解的是数组中的赋值 #include <iostream> using namespace std; int main() { int t,i, nums[3][4]; for(t=0; t < 3; ++t) { for(i=0; i < 4; ++i) { nums[t][i] = (t*4)+i+1; //I don't understand this part/l
#include <iostream>
using namespace std;
int main()
{
int t,i, nums[3][4];
for(t=0; t < 3; ++t) {
for(i=0; i < 4; ++i) {
nums[t][i] = (t*4)+i+1; //I don't understand this part/line
cout << nums[t][i] << ' ';
}
cout << '\n';
}
return 0;
}
据我所知,在记忆中是这样的
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 w h i t e r a b b i t 0
1 f o r c e 0
2 t o a d 0
多谢各位
(t*4)+i+1
是一个算术表达式。t和i是整数,*表示乘法。所以对于第1行第2列,t=1,i=2,nums[1][2]=1x4+2+1=7
哦,忘了几件事。首先,()指定操作顺序。所以t*4是先做的。请注意,在这种情况下()是不必要的,因为乘法运算符优先于加号运算符
另外,我无法从您的问题中判断您是否已经知道这一点,但行[t][I]的含义是用于访问第t行和第I列的行的数组表示法。对于第一部分,它不只是将a值赋值等于行号*4加上列号吗?即,任务的最终结果应为:
1 2 3 4
5 6 7 8
9 10 11 12
所以表达式(t*4)+i+1表示“4乘以行数加上列数加1”。请注意,本例中的行号和列号从0开始。让我们看看,您有
int t,i, nums[3][4];
在这里,我们为2d数组保留空间。数组中的值将具有随机值,因为您只保留了空间
该行:
nums[t][i] = (t*4)+i+1; //I don't understand this part/line
将值指定给数组。t和i是循环计数器,行(t*4)+i+1表示取t的值,乘以4,再加上i和1
对于t=0,i=0,可以得到nums[0][0]的值(0*4)+0+1,即1。。等等
当然()只是基本的数学括号
(t*4)+i+1中没有魔法;它的意思是(t乘以4)加上i加1。如果t为0,i为0,则得到0*4+0+1=1;如果t为1,i为1,则得到1*4+1+1=6,依此类推。我现在了解了数组中每个int的算术表达式是如何工作的,等等。nums[2][2]=2*4+2+1。所以索引nums[2][2]=11,谢谢。
nums[t][i] = (t*4)+i+1; //I don't understand this part/line