如何使用数组输入和输出创建C函数

时间:2018-11-08 12:16:58

标签: c

亲爱的C编程用户,如何编写一个带有C函数的C程序,其输入和输出都为数组?

具体来说;我想给两个4x4矩阵作为输入,然后函数将那个两个矩阵相乘,并给出结果矩阵的输出,它又是4x4矩阵大小? (假设:输入是A和B,输出是D。A(4x4)* B(4x4)= D(4x4))。

我发现并编写了一个可以将两个矩阵相乘的主程序代码。但是我不能将其放入C函数中。我了解到C函数仅输出数字值,而不输出数组或矩阵。

如何在C编程中解决该问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

您将必须将两个数组都作为指针传递给函数。只需传递相应数组的名称即可轻松实现。 至于返回“值”,您当然可以定义函数以返回指向另一个数组的指针。但是那里有一个问题: 谁拥有那个数组? 实际上,您将有两个(三个)可行的选择:

1)您将输出数组声明为全局变量。这不是一个好习惯。

2)您在两个源数组的同一位置声明输出数组,并将该输出数组的地址作为第三个参数传递给函数。

3)(不推荐!)您可以在函数中将输出数组声明为静态,然后返回指向它的指针。

PS:实际上,我只会提到另外两种方式,但是不要让这种方式使您感到困惑。

1)实际上,您可以通过一些技巧将整个数组传递给函数:您可以将数组放入结构中。结构必须通过值(及其所有内容)传递。但是,我个人认为这很不雅致,并且还会带来性能损失,因为结构中的所有内容(包括数组)都必须复制到堆栈上。

2)您的函数可以在堆上动态分配输出数组(使用malloc或calloc),并返回指向该数组的指针。但是,这随后使函数的调用者稍后再次释放()该内存,这很容易被忽略。然后,这将导致内存泄漏。另外,就处理时间而言,堆分配非常昂贵。