C:2d数组上的嵌套循环会产生意外结果

问题描述 投票:0回答:2

这是问题的最小可复制示例。故意将高度和长度作为参数(而不是计算它们)。

typedef struct
{
    int red;
} triple;

int main(void)
{
    triple array[3][3] = {
      { {.red = 10}, {.red = 40}, {.red = 70}},
      { {.red = 110}, {.red = 120}, {.red = 130}},
      { {.red = 200}, {.red = 220}, {.red = 240}}
    };

printarray(2, 2, array);
}


void printarray(int height, int length, triple array[][length])
{
    for (int i = 0; i < height; i++)
    {
        for (int j = 0; j < length; j++)
        {
            printf("red score at array[%i][%i] = %i\n", i, j, array[i][j].red);
        }
    }
}

我得到的输出是:数组[0] [0] = 10处的红色分数数组[0] [1]处的红色分数= 40数组[1] [0] = 70处的红色分数数组[1] [1] = 110]上的红色分数

但是我希望:数组[0] [0] = 10处的红色分数数组[0] [1]处的红色分数= 40数组[1] [0] = 110处的红色分数数组[1] [1] = 120]上的红色分数

二维数组的索引显然没有按我期望的那样工作,但是为什么呢?

这是问题的最小可复制示例。故意将高度和长度作为参数(而不是计算它们)。 typedef struct {int red; }; int main(void){...

c arrays multidimensional-array cs50
2个回答
0
投票

您正在将2,2传递到printarray。这是height,length

但是,数组是defined


0
投票

问题出在您致电printarray

© www.soinside.com 2019 - 2024. All rights reserved.