2012-11-21 21 views
-2

我目前有問題,我的家庭作業,要求我們創建一個程序,解決矩陣問題使用通過引用,我只是不知道它是如何完成的。 有人可以給我看一個簡單的代碼,通過引用來解決矩陣加法。 謝謝..矩陣加法使用在C參考通過

+1

[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

使用谷歌。你會很快找到解決方案。 – qwertz

+0

這是基本的整個作業任務。分解它,谷歌通過引用在C(或在這裏搜索),然後谷歌矩陣增加(或在這裏搜索)。 – weston

回答

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需要兩個參數,返回新的矩陣(通過複製)。

用「通過引用」這將是:

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?