C および C++ では、配列インデックスは 0 ベースであることに注意してください。したがって、N項目の配列がある場合、有効なインデックス値は 0,1,2,...,( N -1) です。
あなたの場合、N = 7 なので、有効なインデックス値は 0,1,2,3,4,5,6 です。
したがって、 for ループで次のように置き換え<=
ます<
。
UINT8 temp[7];
for (int i = 0; i < 7; i++) // Use <, not <=
....
さらに、 VS in で利用できる便利な_countof()
マクロがあり、コードの読み取りと保守<stdlib.h>
が容易になります(ループ内で「マジック ナンバー」7 を使用する代わりに)。for
for (int i = 0; i < _countof(temp); i++)
を使用し_countof()
て、配列のサイズを変更しても、7 を新しい配列サイズに変更しなくても、ループ コードは機能します。
また、C++11 では範囲ベースの for ループを使用できることにも注意してください(ただし、この質問でタグとして使用した VC10/Visual Studio 2010 では使用できません)。
指定されたバイト シーケンスでバッファを埋めたい場合は、memset
(C のような方法で)使用できることに注意してください。
memset(temp, 0x01, sizeof(temp));
または、より一般的には (1 バイトを超える要素の場合でも)、以下std::fill
からC++ を使用でき<algorithm>
ます。
fill(begin(temp), end(temp), 0x01);
のような明示的なアルゴリズムを使用するstd::fill
と、ソース コードの「セマンティック レベル」が上がるため、コードが読みやすくなります (意味を解釈する必要がある「生の」ループを読み取る代わりに、「 fill 」を読み取るだけです)。for