-2

最近、コードブローを読んで混乱します

 static string const dirs[6] = {"-n", "-ne", "-se", "-s", "-sw", "-nw" };
 int a = sizeof(dirs)/sizeof(*dirs);

そして、a will は配列のサイズである 6 に等しくなります。

だから私の質問は:

  1. sizeof(dirs) は何を表していますか? 配列全体のサイズですか?

  2. sizeof(*dirs) は何を表していますか?

4

5 に答える 5

2
  1. sizeof(dirs)配列全体のサイズを表す
  2. sizeof(*dirs)配列の単一要素のサイズを表します

したがって、sizeof(*dirs) * 要素数 = sizeof(dirs) です。なぜなら、要素数 * 各要素のサイズ = 配列全体のサイズだからです

したがって、要素の数 = sizeof(dirs) / sizeof(*dirs) です。

于 2013-06-23T06:15:15.930 に答える
2
what does sizeof(dirs) represent? Is the size of the total array?

はい、そうです。

what does sizeof(*dirs) represent?

*dirsは と同じでdirs[0]sizeof(*dirs)最初の要素のサイズも同じです。(まあ、すべての要素のサイズは同じなので)

sizeof(dirs)/sizeof(*dirs)配列の要素数になります。

于 2013-06-23T06:18:08.173 に答える
0

sizeofoperator は、指定されたオペランドのサイズをバイト単位で返します。*dirと等しいのでdir[0]sizeof(*dirs)最初の配列要素sizeof(dirs)のサイズをバイト単位で返し、すべての配列のサイズをバイト単位で返します。したがって、これらの数値を除算すると、配列の要素数が得られます。

sizeof演算子の詳細: http://en.wikipedia.org/wiki/Sizeof http://en.cppreference.com/w/cpp/language/sizeofおよびhttp://msdn.microsoft.com/en-us/library /4s7x1k91(v=vs.110).aspx

于 2013-06-23T06:30:54.910 に答える