[英]Passing pointer to function WITHOUT modifying argument?
我有一個矩陣M[2][2]
,想調用函數dontModify(M)
,該函數將與M的元素一起使用,但不更改它們。 就像是:
dontModify(M):
swap off-diagonal elements;
take determinant of M;
return determinant;
...但是在此過程中沒有更改功能M。 有什么方便的辦法可以做到這一點?
在函數內部創建矩陣的本地副本,您可以使用該副本進行任何操作。
int some_function(int matrix[2][2])
{
int local_matrix[2][2] = {
{ matrix[0][0], matrix[0][1] },
{ matrix[1][0], matrix[1][1] },
};
/* Do things with `local_matrix` */
/* Do _not_ use `matrix` */
...
}
坦白地說,不要理解您的問題。 您正在使用矩陣,因此它將通過指針傳遞給函數。 因此,只需創建矩陣的副本,對其進行處理,銷毀該副本,然后再返回即可。 如果此調用非常頻繁,則可以嘗試節省一些時間並就地工作,只是不要忘記在返回之前將對角線的元素交換回來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.