初始化2D int列在运行时间
-
07-07-2019 - |
题
我得到了代码下面从C++的书,我不想出如何初始化工作。
从什么我可以看到,有一个外部用于环骑自行车的通行,和内环 骑自行车槽列。但是分配的价值进入阵,我不明白。
#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;
}
因此,这里有一些问题。
- 我无法理解的初始化的2D int阵列
nums[3][4]
.什么分离(t*4)+i+1
, ,因此,编译器知道该怎么分配那里? - 我怎么知道是什么值将存在的行列,根据什么样的价值观已经分配的?
- 为什么是有星号的?
- 什么是两边的括号
t*4
用的?
我的理解是,初始化的两个维阵列如下面的例子。
#include <iostream>
using namespace std;
int main() {
char str[3][20] = {{"white" "rabbit"}, {"force"}, {"toad"}}; //initialize 2D character array
cout << str[0][0] << endl; //first letter of white
cout << str[0][5] << endl; //first letter of rabbit
cout << str[1][0] << endl; //first letter of force
cout << str[2][0] << endl; //first letter of toad
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和我们整数、*意味着增加。因此,对于第1行,列2,t=1,i=2,nums[1][2]=1x4+2+1=7.
哦,忘了一对夫妇的事情。第一,()是指定次序的操作。因此t*4样做是第一次。请注意,在这种情况下的()是不必要的,因为乘操作者需要优先加上操作无论如何。
还有,我不能告诉你的问题如果你知道这已经或不大,但意义的行[t][i]列符号表示的访问行行t和列。
其他提示
第一部分,不是,它只是分配一个值相等的行多*4再加上所列号码的?E.I.最终结果的分配应该是:
1 2 3 4
5 6 7 8
9 10 11 12
这样的表达(t*4)+i+1装置"4乘以列号加列号加1".请注意,行数量和列的数字,在这种情况下开始从0.
nums[t][i]是一个地中的阵列,它是分配的价值(t*4)+i+1。
因此,如果t=1和i=1然后尽num[1][1]将相等(1*4)+1+1这是6。
参见上文。
星号是成倍增加。
你做的是什么()第一就像在任何数学公式。
让我们看看,你有
int t,i, nums[3][4];
我们预留空间的2d阵列。值的内部阵将有随机的价值观,因为你只有预留的空间。
的线:
nums[t][i] = (t*4)+i+1; //I don't understand this part/line
分配的价值观的阵列。你有t和我这是循环计数器和线路(t*4)+i+1装置,采取值的t,乘以4,加上我和加1。
因此,对于t=0,i=0,你会得到那nums[0][0]具有的价值(0*4)+0+1 1..等一切。
当然的()都只是基本的数学括号中。
不隶属于 StackOverflow