配列を初期化するときは、文字列リテラルを使用することが可能であると読みました。ただし、初期化子が配列のサイズよりも大きい場合のリストの場合、エラーがキャッチされます。
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char cAr2[3] = "ABC";
for (int i = 0; i < 3; i++)
cout<<cAr2[i]<<endl;
system("pause");
return 0;
}
さて、この例は私の本にあります。実際には次のように終了します。エラーC2117:'cAr2':配列の境界がオーバーフローします。
ここで何が起こっているのか教えてください。3つの要素と3つの要素の配列がそこに配置されているのがわかります。すべてが大丈夫のようです。なぜエラーですか?