2

以下のコードでジャグ配列からデータを挿入して印刷する方法は?

int *jagged[5];

jagged[0] = malloc(sizeof(int) * 10);
4

2 に答える 2

8

ネストされた配列のインデックスに2番目の添え字を追加することで挿入できます。

int i;
for (i = 0; i < 10; ++i)
    jagged[0][i] = some_value;

のように印刷します

int i;
for (i = 0; i < 10; ++i)
    printf("%d\n", jagged[0][i]);

ネストされた各配列の長さを自分で追跡する必要があることに注意してください。あなたのニーズに応じて、あなたは次のようなことをするかもしれません

int jagged_lengths[] = {10, 5, 4, 0, 3};
int i, j;

// Write some data
for (i = 0; i < 5; ++i) {
    jagged[i] = malloc(sizeof(int) * jagged_lengths[i]);
    for (j = 0; j < jagged_lengths[i]; ++j)
        jagged[i][j] = some_value;
}

// Read back the data
for (i = 0; i < 5; ++i)
    for (j = 0; j < jagged_lengths[i]; ++j)
        printf("%d\n", jagged[i][j]);
于 2012-03-02T20:30:42.730 に答える
1

まず、配列を多次元配列として定義してみませんか?各メンバーのサイズを変えたい場合を除いて、メンバーごとにmallocを使用する必要はありません。次のようにするだけです。

int jagged[5][10];

反復に関しては、次のようなことができます。

int i,j;
for (i = 0; i < 5; i++)
    for (j = 0; j < 10; j++)
       jagged[i][j] = i*j; //or any value you want


for (i = 0; i < 5; i++)
    for (j = 0; j < 10; j++)
        printf ("%d,%d: %d\n", i, j, jagged[i][j]);
于 2012-03-02T20:34:50.130 に答える