【问题标题】:Use Jagged Array In c在 c 中使用交错数组
【发布时间】:2012-03-21 08:17:42
【问题描述】:

如何在下面的代码中从锯齿状数组中插入然后打印数据?

int *jagged[5];

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

【问题讨论】:

    标签: c jagged-arrays


    【解决方案1】:

    您可以通过为嵌套数组的索引添加第二个下标来插入。

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

    【讨论】:

    • 谢谢@Daniel!对我真的很有帮助,最后我完成了我的任务!
    【解决方案2】:

    首先,为什么不将您的数组定义为多维数组?除非您希望每个成员的大小不同,否则您不需要为每个成员使用 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]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 2018-08-01
      • 2021-08-02
      相关资源
      最近更新 更多