二次元配列の初期化

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

二次元配列の初期化

#1

投稿記事 by たち » 15年前

グローバル変数等で二次元配列を初期化する時に
int MapData[3][3] = {
 {1,1,1},
 {1,1,1},
 {1,1,1}
}
の様にいつも書いております。
最近気がついたのですがこれをメイン関数内で初期化しようとすると
MapData[0][0] = 0のように一個ずつ書かないとエラーになってしまいます。
まとめて書く方法はないのでしょうか?

これでは出来ませんでした。
MapData[/url][/url] = {
~略
}

toyo

Re:二次元配列の初期化

#2

投稿記事 by toyo » 15年前

関数内でも宣言時なら出来ますよ
int main(void)
{
    int MapData[3][3] = {
        {1,1,1},
        {1,1,1},
        {1,1,1}
    };
    return 0;
}

たいちう

Re:二次元配列の初期化

#3

投稿記事 by たいちう » 15年前

#include <iostream>
using namespace std;

int MapData[3][3];

int main() {
    const int data[3][3] = {
        { 1, 2, 3},
        { 4, 5, 6},
        { 7, 8, 9},
    };
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            MapData[j] = data[j];

    for (int y = 0; y < 3; y++) {
        for (int x = 0; x < 3; x++)
            cout << MapData[x][y] << " ";
        cout << endl;
    }

    return 0;
}

main関数で初期化したい理由が分かりませんが、
私が書くならこんな感じです。
マップデータということなので、代入時に添え字を入れ替えています。

toyo

Re:二次元配列の初期化

#4

投稿記事 by toyo » 15年前

よく読んだら宣言時以外でという意味ですかね
それなら無理です
初期化用のデータを準備しておいてコピーするのがいいのでは

くりく

Re:二次元配列の初期化

#5

投稿記事 by くりく » 15年前

static int MapData[3][3];
ではだめでしょうか?

閉鎖

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