配列の初期化の仕方

初期化子の書き方

補足:現在学んでいる配列は、コンパイル時に配列の要素数が確定している必要があるため、「cinなどで要素数を読み込んで、 その場で要素数分の変数を用意する」ことはできない! (後で習う、動的メモリ取得やSTLの動的配列を使えばできるよ!(今は我慢))

実際のコード例
#include <iostream>
 
//使うものだけstd省略する設定
using std::cout;
using std::cin;
using std::endl;
 
//これやるとお行儀悪いって言われるよ
//using namespace std;
 
//今日のお題:配列のお話
 
int main() 
{
	int a = 10;//変数aを初期化
	//整数型の変数を10個用意(初期化子)して初期化
	int var[10]={10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
	//初期化子の数で配列の要素数を確定させる書き方
	int var2[]{10, 9, 8, 7, 6, 5};
	//初期化子の数と、宣言の要素数が違ったらどうなる?
	//int var4[10]{1,2,3};
	//int var4[3]{1,2,3,4};
 
	//<--------    コンパイル時に配列の大きさが確定しない例    -------->
        //int anum;
	//cin >> anum;
	//int var3[anum];//コンパイル時に配列の要素数が確定しないのはダメ
        //<--------    コンパイル時に配列の大きさが確定しない例    -------->
 
        //配列のすべての要素を表示
	for(int i=0;i<10;i++)//int iはここで宣言してもいいんだよ
	{
		cout << "var[" << i << "] => " << var[i] << endl;		
	}
 
	//要素数をオーバーしてアクセスすると変な値が出たり、何が起こるかわからない
	for(int i=0; i< 10; i++)//int iはここで宣言してもいいんだよ
	{
		cout << "var2[" << i << "] => " << var2[i] << endl;
	}
}
実行結果

範囲外アクセス部分では謎の値が表示されているのがわかる。
システムによっては、エラーをはいて落ちます。

var[0] => 10
var[1] => 9
var[2] => 8
var[3] => 7
var[4] => 6
var[5] => 5
var[6] => 4
var[7] => 3
var[8] => 2
var[9] => 1
var2[0] => 10
var2[1] => 9
var2[2] => 8
var2[3] => 7
var2[4] => 6
var2[5] => 5
var2[6] => 1534222710    <----範囲外アクセス部分
var2[7] => 1025531136    <----範囲外アクセス部分
var2[8] => 1979719742    <----範囲外アクセス部分
var2[9] => 1530032737    <----範囲外アクセス部分