多次元配列の初期化

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

多次元配列の初期化

#1

投稿記事 by ローラーパニック » 15年前

初めまして。

VC6.0で以下のコードを実行したところ、添付ファイルのような結果になりました。
12fe00[1]    12fe04[2]    12fe08[3]    12fe0c[4]    12fe10[5]    …
というような結果を期待していたのですが、どこがいけなかったのでしょうか?
#include <stdio.h>

int main()
{
    int tbl[/url][4][2] = {        // tbl[成長タイプ][年齢][性別]
        {1, 2}, {3, 4}, {5, 6}, {7, 8},
        {9, 10}, {11, 12}, {13, 14}, {15, 16},
        {17, 18}, {19, 20}, {21, 22}, {23, 24}
    };
    int grow, age, sex;

    for (grow = 0; grow < 3; grow++) {
        for (age = 0; age < 4; age++) {
            for (sex = 0; sex < 2; sex++) {
                printf("%x[%d]\t", &tbl[grow][age][sex], tbl[grow][age][sex]);
            }
        }
    }

    return 0;
}

Justy

Re:多次元配列の初期化

#2

投稿記事 by Justy » 15年前

 初期化のところに問題があります。

 簡単に言えば必要なところに {}がないので、tbl[/url][4][2]配列は初期化データから
tbl[12][4][2]として扱われています。
 その為、{3, 4}や {5, 6}などが本来想定していたところとは別のところに設定されて
しまっています。


C言語編 第25章 多次元配列
http://www.geocities.jp/ky_webid/c/025.html


# あと printfのところで、ポインタを表示するときは %pとして下さい。

ru

Re:多次元配列の初期化

#3

投稿記事 by ru » 15年前

2次元配列になってるから

ローラーパニック

Re:多次元配列の初期化

#4

投稿記事 by ローラーパニック » 15年前

Justy様、詳しい説明ありがとうございました。
中括弧の有無とは無関係に連続的に値がセットされていく、と思い込んでいたのがいけなかったようです。

ru様、レスありがとうございます。

閉鎖

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