最近、コードブローを読んで混乱します
static string const dirs[6] = {"-n", "-ne", "-se", "-s", "-sw", "-nw" };
int a = sizeof(dirs)/sizeof(*dirs);
そして、a will は配列のサイズである 6 に等しくなります。
だから私の質問は:
sizeof(dirs) は何を表していますか? 配列全体のサイズですか?
sizeof(*dirs) は何を表していますか?
sizeof(dirs)
配列全体のサイズを表すsizeof(*dirs)
配列の単一要素のサイズを表しますしたがって、sizeof(*dirs) * 要素数 = sizeof(dirs) です。なぜなら、要素数 * 各要素のサイズ = 配列全体のサイズだからです
したがって、要素の数 = sizeof(dirs) / sizeof(*dirs) です。
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)
配列の要素数になります。
sizeof
operator は、指定されたオペランドのサイズをバイト単位で返します。*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