如何在下面的代码中插入并打印来自锯齿状数组的数据?
int *jagged[5];
jagged[0] = malloc(sizeof(int) * 10);
答案 0 :(得分: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]);
答案 1 :(得分: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]);