2012-03-02 1 views

ответ

8

Вы можете вставить, добавив второй индекс для индекса вложенного массива.

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]); 
+0

Спасибо @ Даниэль! Действительно очень полезно для меня, и, наконец, я выполнил свои задания! –

1

Прежде всего, почему бы не определить ваш массив как многомерный массив? если вы не хотите, чтобы размер каждого члена другой, вам не нужно использовать таНос для каждого члена, просто сделать:

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]);