【发布时间】:2020-04-24 17:29:53
【问题描述】:
这是该问题的最小可重现示例。 将高度和长度作为参数(而不是计算它们)是经过深思熟虑的。
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
二维数组的索引显然没有像我预期的那样工作,但是为什么?
【问题讨论】:
标签: c arrays multidimensional-array cs50