固定長配列の初期化

プロのプログラマの方からすれば、何をいまさらな話。
先日よそ様のコードを見ていたら、以下のようなコードがあった。

int array[10] = {0};

え?なに?と思ったのだが、これで配列arrayの全要素が0で初期化される。
頭のいくつかだけ規定値で初期化して、残りを0に初期化したい場合は、

int array[10] = {0, 1, 2};

でOK。
これで

int array[10] = {0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0};

としたのと同じになる。
ただし、

int array[10] = {1};

としても、全要素が1で初期化されるわけではないから、注意。
これは実際には、

int array[10] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

としたのと同じになる。

#include <stdio.h>
#define ARRAY_SIZE 10

int main(int argc, char* argv[])
{
	int counter;
	int array[ARRAY_SIZE] = { 0, 1, 2, 1};
	//
	for (counter = 0; counter < ARRAY_SIZE; counter++)
	{
		printf("%d, ", *(array + counter));
	}
	printf("\n");
	printf("Completed \n");
	getchar();
	return 0;
}