矩阵加法使用C中的引用传递

时间:2012-11-21 13:33:27

标签: c

我目前的作业有问题,要求我们创建一个程序,通过引用来解决矩阵问题,我只是不明白它是如何完成的。 有人可以给我看一个简单的代码,使用传递引用解决矩阵添加。 谢谢..

1 个答案:

答案 0 :(得分:1)

假设我们已经定义了mat4_t类型和mat4_add函数。

typedef ... mat4_t;

使用“副本”方法将如下所示:

mat4_t mat4_add(mat4_t m1, mat4_t m2);
mat4_t m1, m2, m3;
m3 = mat4_add(m1, m2);

函数mat4_add接受2个参数并返回新矩阵(按副本)。

使用“引用”将是:

void mat4_add(mat4_t *sum, const mat4_t *m1, const mat4_t *m2);
mat4_t m1, m2, m3;
mat4_add(&m3, &m1, &m2);

函数接收指向两个源矩阵(m1,m2)的指针和指向内存的指针,它应存储矩阵和。


采用第一种方法: m1和m2都被复制到函数堆栈,因此堆栈增长2 * sizeof(mat4_t)并复制矩阵数据。之后,函数堆栈会以另一个sizeof(mat4_t)增长来存储计算结果。当从函数返回值赋值时,使用return语句再次复制该结果。

另一方面,指针“通过引用”,没有必要应对。这种方法更快(不需要副本)和更高的内存效率。

此外,没有像C中的引用复制这样的东西。一切都是通过值传递的。 what happens during pass by reference in C?