0

複数の配列を持つstruct別のものを含む を作成しようとしています。structこれらの配列も動的に割り当てる必要があるため、まだ別のポインターが必要だと思います。

int arraysize;

typedef struct Array{
int *size = arraysize;
unsigned int val[*size];
unsigned int x[*size];
unsigned int y[*size];
} Array;

typedef struct Image{
int height;
int width;
int max;
Array *data;
} Image;

OK、最終的にそれを理解したら、 を使用してそのメモリを動的に割り当てる方法を理解する必要がありますmalloc。私もそこに完全に迷っています。どんな助けでも大歓迎です。

編集: 詳細: 配列を使用して、すべて接続されている 3 つの情報を格納しています。チェス盤を考えてみてください。騎士 E4 と言えます。これは、行 E の 4 列目に騎士がいることを示しています。このプロセスを A1 で開始し、K10 で終了した場合、完全なチェス盤になりますよね? image 構造体はチェス盤に似ており、Array はチェス盤を構成する一連の正方形とそれらの正方形の内容のリストに似ています。(例: A1 null A2 ナイト a3 ビショップなど...) 残念ながら、どの種類のボードが通過するかはわかりません。3x7 ボードや 9x2 ボードなどである可能性があります。したがって、メモリを動的に割り当てる必要があります。それらの可能性。メモリを割り当てたら、すべての「正方形」の場所と内容に関する情報を保存する必要があります。

4

1 に答える 1

1

あなたが実際に意味したのは:

typedef struct data {
    unsigned int x;
    unsigned int y;
    unsigned int val;
} Data;

typedef struct image {
    int height;
    int width;
    int max;
    Data* data;
} Image;

そしてどこか:

Image i;
i.height = 10;
i.width  = 20;
i.data   = malloc(sizeof(Data) * i.width * i.height);
...
// one of the ways how to access Data at 2nd row, 3rd column:
*(i.data + i.width * 1 + 2).val = 7;
...
free(i.data);
i.data = NULL;

しかし、実際に必要なのは良い本です ;)

于 2013-09-24T22:23:26.540 に答える