gpt4 book ai didi

c - 二维数组 - 为什么我没有引用预期的元素?

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:59 24 4
gpt4 key购买 nike

毫无疑问,这是真正的菜鸟问题,但我无法理解这种行为。我初始化一个二维数组,然后调用一个函数从中打印出某些值。程序和结果如下图:

int
main(void)
{
int matrix[3][5] =
{
{14,7,6,55,2},
{8,33,12,88,24},
{19,20,21,90,7}
};

printArray(3, 5, matrix);

printArray(2, 3, matrix);

return 0;
}

void
printArray(int rows, int columns, int matrix[rows][columns])
{
int i, j;



for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
printf("%3i ", matrix[i][j]);

printf("\n");
}



printf("\n");
}



14 7 6 55 2
8 33 12 88 24
19 20 21 90 7

14 7 6
55 2 8

似乎第二次调用 printArray() 时它继续在新行上打印第一行的值,而不是实际访问下一行。我不明白这一点,因为索引值肯定是恒定的,不是吗? (即 matrix[1][2] 应该是(在这种情况下)12,而不是 8。

提前致谢。

最佳答案

以下内容:

void printArray(int rows, int columns, int matrix[rows][columns])

向编译器保证第三个参数的维度是x

同时,下面一行违背了这个 promise :

printArray(2, 3, matrix);

因为 matrix3x5 而不是 2x3

如果您只想打印行和列的子集,您可以这样做:

void
printArray(int rows, int columns, int matrix[rows][columns], int max_row, int max_col)
{
int i, j;

for (i = 0; i < max_row; i++)
{
for (j = 0; j < max_col; j++)
printf("%3i ", matrix[i][j]);
printf("\n");
}
printf("\n");
}

int main(void)
{
...
printArray(3, 5, matrix, 3, 5);
printArray(3, 5, matrix, 2, 3);
}

关于c - 二维数组 - 为什么我没有引用预期的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11065014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com