0

我对 C 编程相当陌生,所以请耐心等待 :) 我有一个 main(),它生成一个二维数组(又名矩阵)。我试图定义一个“外部”函数 matrix_multipl(),它从 main() 中获取两个矩阵,将它们相乘并返回它们,这当然会导致问题(你不能从函数中返回一个数组)。

所以我的方法如下,我想知道我是否正确理解了这个过程:

我在 main 和从那里生成数组(first[m][n]、second[o][p] 和结果 [m][p] 矩阵),我只使用指向该数组的指针,所以如果我调用指针到matrix_multipl()中的那个数组,它基本上跑回main,从数组中获取相应的值,用它做一些事情(矩阵乘法),最后取计算值,再次运行到main()并写入结果进入结果[m][p] 矩阵,它一直停留在 main() 中,因此不需要“返回”?

我希望我做对了,因为这听起来绝对合乎逻辑并且非常有用,因为它可以防止来回推挤大数组:)

4

3 回答 3

1
于 2013-01-02T21:56:38.317 回答
0

它不会“本质上运行回主”,matrix_multiply() 将访问矩阵指针指向的内存。

而且,关于其他答案之一和“按引用传递”,C 始终使用“按值传递” - 这就是您必须传递指针而不是矩阵本身的原因(实际上传递给 matrix_multiply 的内容将是您在 main 中定义的指针的副本)。

于 2013-01-02T21:59:41.250 回答
0

引用数组的起始内存地址(通过引用)。

void matrix_multiply(int *array1, int *array2, int *answer) {
// matrix multiply operation.
}

惯例:

&array[0]传递给函数以满足参数*array

于 2013-01-02T22:10:41.070 回答