-1
如何在C中的函數中修改通過值而不是通過引用傳遞的變量?如何在C中的函數中修改通過值而不是通過引用傳遞的變量?
void fun_a(int a, int b) {
....
}
int main() {
int x = 5, y = 6;
printf("%d, %d", x, y); // 5, 6
fun_a(x, y); // pass by value
printf("%d, %d", x, y); // 1, 2
return 0;
}
如何使用fun_a
更改變量?
有沒有辦法做到這一點?雖然我知道它可以通過輕鬆傳遞引用來更改變量。
你不能,你只能得到一個副本,它不會傳播回來。 – Jester
有沒有乾淨的方法來做到這一點在常規C,這就是「按價值傳遞」的意思,你不能影響它。你可能需要修改編譯器生成的機器代碼才能完成它,但這不是通用的解決方案,只是每次編譯。 (因爲大多數具有優化的編譯器會將第二個'printf'編譯爲'puts(「5,6」);'以節省運行時資源,因爲在編譯期間已知'x,y'的值,所以在如果您需要修補機器碼以包含不同的字符串以輸出「1,2」) – Ped7g
您的問題就像詢問是否有任何方法用錯誤的方式書寫。 – fuz