二次元配列の初期化

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
カイ

二次元配列の初期化

#1

投稿記事 by カイ » 17年前

質問させて頂きます。
 Borland C++を使っていて、二次元配列を宣言と同時に初期化はできるのですが、
 できれば好きなときに数値を変更したくて下記のソースを作りましたが、うまくいきません。
 (解決のために新たに作成したファイルなのでプログラム自体の意味はありません。)

エラー E2188 test.cpp 22: 式の構文エラー(関数 RESET() )
と出てしまいます。

どこが原因なのかご指導お願いします。m(_ _)m
#include "DxLib.h"
int map[2][3];
void RESET(void);

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
			 LPSTR lpCmdLine, int nCmdShow )
{
	if( DxLib_Init() == -1 )		// DXライブラリ初期化処理
	{
		 return -1;		// エラーが起きたら直ちに終了
	}

	RESET();

	DxLib_End() ;			// DXライブラリ使用の終了処理

	return 0 ;			// ソフトの終了
}

void RESET(void)
{
map[2][3]
   ={1,2,3,
     4,5,6 };
}

ibis

Re:二次元配列の初期化

#2

投稿記事 by ibis » 17年前

2次元配列の初期化の構文は、
int map[2][3]
 ={{1,2,3},
  {4,5,6}};
ですよ。


それから、初期化構文が使えるのは宣言した時だけなんですね。
だからRESET関数の中で初期化したいのなら、

map[0][0] = 1;
map[0][1] = 2;
//以下略

みたいに、一つずつ代入するしかないです。

カイ

Re:二次元配列の初期化

#3

投稿記事 by カイ » 17年前

速い返事をありがとうございます。

>>それから、初期化構文が使えるのは宣言した時だけなんですね。
そうですか…残念です。
このソースのように規則性のある初期化をする予定はないので、
最初に宣言するのが妥当みたいですね。
どうもありがとうございました。

lbfuvab

Re:二次元配列の初期化

#4

投稿記事 by lbfuvab » 17年前

初期状態の配列をもう一つ用意しておき
代入するのはどうでしょう。
int map[2][3]={{1,2,3},{4,5,6}};
const int reset_map[2][3]={{1,2,3},{4,5,6}};

void reset(){
    int i,j;

    for(i=0;i<2;i++)
        for(j=0;j<3;j++)
            map[j]=reset_map[j];
}

閉鎖

“C言語何でも質問掲示板” へ戻る