(C) 使用二维数组的功能



所以我被要求做以下函数:

int **multiplyM(int MA[][], int MB[][], int n, int m)

这将乘以两个矩阵。第一个 (MA) 的维度为 n、n 和第二个 (MB) 的维度为 n、m。我已经完成了程序的所有操作,但是我收到由函数本身引起的错误,该错误说:

"数组类型具有不完整的元素类型"

我知道我可以通过更改函数中的内容来修复它(例如将其更改为 **MA 和 **MB),但问题是,我不应该这样做,因为我应该基于这个函数制作我的程序给我。

所以我的问题是:有没有办法在不改变功能的情况下完成这项工作?

必须为MAMB提供第二个维度

所以

#define SIZE_M 5 //Any constant
#define SIZE_N 6
int **multiplyM(int MA[][SIZE_M], int MB[][SIZE_N], int n, int m)
       //Fix ->           ^^^                ^^^

您不能像现在这样将多维数组传递给函数。声明函数时,需要指定第二个维度(以及任何其他维度)的大小。 在此处指定大小很重要。如果不是强制性的,编译器将无法处理这样的表达式Array[2][3]。用作数组维度的值必须是 ANSI C 和其他版本的常量,但它可以是 C99 和后续版本的变量。C99标准引入了可变长度数组功能,该功能允许在运行时确定数组的大小。

所以:

#define N 10
#define M 5 
int **multiplyM(int MA[][N], int MB[][M], int n, int m)

我知道我可以通过更改函数中的内容来修复它(例如更改 它到 **MA 和 **MB),但问题是,我不应该那样做, 因为我应该基于这个函数制作我的程序 给了我。

如果不至少修改函数的声明,您将无法解决此问题。

相关内容

  • 没有找到相关文章

最新更新