2012-03-02 73 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

感謝@丹尼爾!真的對我很有幫助,最後我完成了我的任務! – 2012-03-03 21:37:44

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