我是C编程的新手,所以忍受我:) 我有一个main()生成一个2D数组(也就是一个矩阵)。 我试图定义一个“外部”函数matrix_multipl(),它从main()获取两个矩阵,将它们相乘并返回它们,这当然会引起问题(你不能从函数返回一个数组)。
所以我的方法如下,我想知道我是否正确理解了这个过程:
我在main中生成数组(第一个[m] [n],第二个[o] [p]和结果[m] [p]矩阵),我只使用指向该数组的指针,所以如果我在matrix_multipl()中调用指向该数组的指针,它基本上运行回main,从数组中取出相应的值,用它做一些事情(矩阵乘法),最后得到计算值,再次运行到main()和将结果写入结果[m] [p]矩阵,该矩阵一直保留在main()中,因此不需要“返回”?
我希望我做对了,因为这听起来绝对合乎逻辑且非常有用,因为它可以防止来回推送大数组:)
答案 0 :(得分:1)
我不确定我完全理解你的意思'回到主要()'但是,你似乎在谈论的通常被称为{{3在C编程中是一种常用的技术。
答案 1 :(得分:0)
它“基本上不会运行回主”,matrix_multiply()将访问矩阵指针所指向的内存。
并且,关于其中一个答案和'按引用传递',C总是使用'按值传递' - 这就是你必须传递指针而不是矩阵本身的原因(事实上传递给matrix_multiply)将是你在main中定义的指针的副本。
答案 2 :(得分:0)
引用数组的开始内存地址(通过引用)。
void matrix_multiply(int *array1, int *array2, int *answer) {
// matrix multiply operation.
}
约定:
&array[0]
传入函数以满足参数*array