我必须将一个浮点值的二维数组传递给几个函数,但是我无法想出正确的方法。这是我声明它们以及在编译时出错的地方。
void displayData (int, int, float[][]);
void hasValue (int, int, float[][]);
void countValues(int, int, float[][]);
每次编译时都会出错,我只想在失去作业之前完成它。
我必须将一个浮点值的二维数组传递给几个函数,但是我无法想出正确的方法。这是我声明它们以及在编译时出错的地方。
void displayData (int, int, float[][]);
void hasValue (int, int, float[][]);
void countValues(int, int, float[][]);
每次编译时都会出错,我只想在失去作业之前完成它。
C
编程语言实际上没有真正的多维数组
,但有几种方法可以模拟它们。将这样的数组传递给函数的方式取决于用于模拟多个维度的方式。我认为您想使用动态分配VLA
。请参阅此链接以获取更多信息。
在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;
}
}
}
你需要确保将正确大小的数组传递给你的函数。