2012-03-02 74 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]);