C言語関係掲示板

過去ログ

No.106.配列の初期化


No.583

main関数以前での代入文
投稿者---コウ(2001/11/21 15:47:37)


こんにちは、以前にも似たような質問をして申し訳ないのですが、
よろしくお願いします。

えと、お聞きしたいのは配列の中身を代入文で入れることに
関してなのですけれど、配列の中身を代入文で入れる場合、下記のように
しますよね。

main()
{
int a[2][5];
int x;
int y;

for(x=0;x<2;x++)
{
for(y=0;y<5;y++)
{
a[x][y]=y+1;
}
}
}

それで、この中身を入れるとき、main関数以前でもfor文を
使用することはできるのでしょうか?
できないとしたらmain関数以前で代入文で配列の中身を指定するとき、
どのようにすればよろしいのでしょうか?
すいませんがよろしくお願いします。



No.584

Re:main関数以前での代入文
投稿者---B.Smith(2001/11/21 16:22:20)


こんにちは。

代入する値のパターンがそれほど多くなければ、以下のようにstatic宣言した配列に初期値を与える方法を試みてはいかがでしょうか?

main()
{
  static int  a[][5] = {
    1,2,3,4,5,
    1,2,3,4,5,
  };
・・・

グローバル宣言した配列でも初期化の方法は同じです。

int  a[][5] = {
  1,2,3,4,5,
  1,2,3,4,5,
};

main()
{
・・・

static領域(またはグローバル領域)で初期値を与える方法ならば、プログラムロード時に配列の内容が決定されるため、配列初期化のステップがすべて不要になります。そのため、速度の面では効率的です。


No.586

Re:main関数以前での代入文
投稿者---B.Smith(2001/11/22 13:49:00)


ちょっと情けないですが自己レスです。
うっかりしていました。ANSIでしたね。ローカルの配列でも初期化ができます。
初期化の方法は、先に述べた通りです。

main()
{
	int		a[][5] = {
		1,2,3,4,5,
		1,2,3,4,5,
	};
・・・




No.585

Re:main関数以前での代入文
投稿者---shu(2001/11/21 17:30:13)


>こんにちは、以前にも似たような質問をして申し訳ないのですが、
>よろしくお願いします。
>
>えと、お聞きしたいのは配列の中身を代入文で入れることに
>関してなのですけれど、配列の中身を代入文で入れる場合、下記のように
>しますよね。
>
>それで、この中身を入れるとき、main関数以前でもfor文を
>使用することはできるのでしょうか?

できるできないというより、普通はそんなことはしないです。
それと、宣言時に代入する事を初期化といいます。
配列のところをよく読みましょう。(ちゃんと書いてあるから)

No.587

Re:main関数以前での代入文
投稿者---コウ(2001/11/22 17:18:07)


B.Smithさん、shuさん、どうもありがとうございました。
今まで少々甘えがあったのでこれからはよく講座を読んでから質問させていただきます。
どうもありがとうございました。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.01.11
Copyright(c) 2000-2002 TOMOJI All Rights Reserved