我得到了代码下面从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.

  1. nums[t][i]是一个地中的阵列,它是分配的价值(t*4)+i+1。

    因此,如果t=1和i=1然后尽num[1][1]将相等(1*4)+1+1这是6。

  2. 参见上文。

  3. 星号是成倍增加。

  4. 你做的是什么()第一就像在任何数学公式。

让我们看看,你有

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..等一切。

当然的()都只是基本的数学括号中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top