C言語関係掲示板

過去ログ

No.95.構造体における多次元配列の宣言の仕方


はじめまして、コウと言います。
Cを始めて間もない者なので、すごい初歩的な質問で申し訳ありません。

えと、構造体における多次元配列の宣言の仕方について
教えていただきたいのですが、普通の二次元配列だったら
以下のように宣言しますよね。

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

で、これを構造体で宣言したいのですが、
以下のような構造体の配列にデータを入れたい場合は
どのように宣言すれば良いのでしょうか?

struct {
int a[2][6];
u_char cr[2][6];
} c;

申し訳ありませんが、教えていただけないでしょうか?


>Cを始めて間もない者なので、すごい初歩的な質問で申し訳ありません。
>
>えと、構造体における多次元配列の宣言の仕方について
>教えていただきたいのですが、普通の二次元配列だったら
>以下のように宣言しますよね。
>
>int a[2][6]={{1,2,3,4,5,6},{1,2,3,4,5,6}};
>
>で、これを構造体で宣言したいのですが、
>以下のような構造体の配列にデータを入れたい場合は
>どのように宣言すれば良いのでしょうか?
>
typedef unsigned char u_char;
typedef struct {
    int a[2];
    u_char cr[2];
} C;

C c[6] = { {{0,1}, "a"}, {{1,2}, "b"}, {{3,4}, "c"},
           {{5,6}, "d"}, {{7,8}, "e"}, {{9,10}, "f"}, };


宣言時に代入するときは、こんな感じだったと思います。
int も char も6つ必要みたいなので構造体を配列にした
方が良いと思います。

宣言時に代入するとき、少ない配列ならいいのですが
配列が大きくなると、ちょっと厳しいので

for (i = 0; i < 6; i++) {
c.a[0] = ???;
c.a[1] = ???;
strcpy(c.cr, ???);
}
↑みたいにしたほうが楽かもしれません。
(代入値にもよりますが)

最後にintの配列部分はポインタにした方が良いと思います。


>
typedef unsigned char u_char;
typedef struct {
    int a[2];
    u_char cr[2];
} C;

C c[6] = { {{0,1}, "a"}, {{1,2}, "b"}, {{3,4}, "c"},
           {{5,6}, "d"}, {{7,8}, "e"}, {{9,10}, "f"}, };

>
>宣言時に代入するときは、こんな感じだったと思います。
>int も char も6つ必要みたいなので構造体を配列にした
>方が良いと思います。
>
>宣言時に代入するとき、少ない配列ならいいのですが
>配列が大きくなると、ちょっと厳しいので
>
>for (i = 0; i < 6; i++) {
> c.a[0] = ???;
> c.a[1] = ???;
> strcpy(c.cr, ???);
>}
>↑みたいにしたほうが楽かもしれません。
>(代入値にもよりますが)
>
>最後にintの配列部分はポインタにした方が良いと思います。


どうもありがとうございました。
お陰様で無事、解決することができました。
また、色々お聞きすることがあるかもしれませんが、
よろしくお願いします。

戻る


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