0

以下のコードは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;
}

だからここにいくつかの質問があります。

  • 2Dint配列の初期化がわかりませんnums[3][4](t*4)+i+1コンパイラが何をどこに割り当てるかを認識できるように、を分離するものは何ですか?
  • 割り当てられている値に基づいて、行と列に格納される値を知るにはどうすればよいですか?
  • アスタリスクがあるのはなぜですか?
  • かっこは何のt*4ためにありますか?

初期化2次元配列は次の例のように見えることを理解しています。

#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

ありがとうございました。

4

4 に答える 4

2
(t*4)+i+1

算術式です。tとiはintであり、*は乗算を意味します。したがって、行1、列2、t = 1、i = 2、およびnums [1] [2] = 1x4 + 2 + 1=7の場合。

ああ、いくつかのことを忘れました。まず、()は操作の順序を指定します。したがって、t*4が最初に実行されます。この場合、乗算演算子はプラス演算子よりも優先されるため、()は不要であることに注意してください。

また、あなたがこれをすでに知っているかどうかはあなたの質問からはわかりませんが、rows [t] [i]の意味は、行tと列iの行にアクセスするための配列表記です。

于 2009-06-23T20:22:16.803 に答える
0

最初の部分では、行番号* 4に列番号を加えたものに等しい値を割り当てるだけではありませんか?IE割り当ての最終結果は、次のようになります。

1  2  3  4
5  6  7  8
9 10 11 12

したがって、式(t * 4)+ i + 1は、「4に行番号と列番号に1を掛けたもの」を意味します。この場合の行番号と列番号は0から始まることに注意してください。

于 2009-06-23T20:24:21.340 に答える
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です。

そしてもちろん、()は単なる基本的な数学の括弧です。

于 2009-06-23T20:26:20.757 に答える
0
  1. nums [t] [i]は、(t * 4)+ i+1の値を割り当てている配列内の1つのスポットです。

    したがって、t=1およびi=1の場合、スポットnum [1] [1]は(1 * 4)+ 1 + 1、つまり6に等しくなります。

  2. 上記を参照。

  3. アスタリスクは乗算用です。

  4. 他の数式と同じように、最初に()にあることを実行します。

于 2009-06-23T20:27:12.520 に答える