我必须将一个浮点值二维数组传递给几个函数,我这辈子都弄不明白。这是我声明它们的地方,也是我在编译时遇到错误的地方。
void displayData (int, int, float[][]);
void hasValue (int, int, float[][]);
void countValues(int, int, float[][]);
每次我编译都会出错,我只想在我失去它之前完成这个任务。
最佳答案
C
编程语言并没有真正的多维数组
,但是有几种方法可以模拟它们。将此类数组传递给函数的方式取决于用于模拟多维的方式。我认为您想使用 Dynamically Allocated VLA
。看这个link了解更多信息。
在 C
(& C++
) 中,二维数组的数据将逐行
存储(Row -Major Order
) 并且一行的长度始终是获取下一行的正确内存偏移量所必需的。因此,第一个下标仅指示声明数组时所需的存储量,但之后不再需要计算偏移量。因此,您可以将第一个下标留空,您需要在函数声明和定义中提供其余下标。
例如,如果您的数组列大小为 4,则:
void displayData (int, int, float[][4]);
void hasValue (int, int, float[][4]);
void countValues(int, int, float[][4]);
编辑:
您可以使用下面的函数来实现您想要的:
void my_function(int rows, int cols, int array[rows][cols])
{
int i, j;
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
array[i][j] = i*j;
}
}
}
您需要确保将正确大小的数组传递给您的函数。
关于c - 将可变大小的多维数组传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58552127/