透過引用傳遞參數與函數中的值
考慮以下程式碼片段:
void trans(double x, double y, double theta, double m, double n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
如果您按如下方式呼叫此函數:
trans(center_x, center_y, angle, xc, yc);
並期望值xc 和yc改變,你會失望的。這是因為在 C 中參數預設是按值傳遞的,這意味著對函數內部參數所做的任何更改都不會反映在傳入的原始變數中。
要解決此問題,您可以傳遞透過參考傳遞參數或使用指標運算。
使用引用
在 C 中,可以使用引用來傳遞參數 參考。這允許您修改傳入的原始變數。以下是修改 trans 函數以使用引用的方法:
void trans(double x, double y, double theta, double& m, double& n) { m = cos(theta) * x + sin(theta) * y; n = -sin(theta) * x + cos(theta) * y; }
請注意,參數類型現在是 double 的引用(即 double&)。
然後您可以如下呼叫該函數:
trans(center_x, center_y, angle, xc, yc);
現在將正確修改xc 和yc.
使用指標算術
C 中透過引用傳遞參數的另一種方法是使用指標算術。這在 C 中更常見,但也可以在 C 中使用。以下是修改 trans 函數以使用指標算術的方法:
void trans(double x, double y, double theta, double* m, double* n) { *m = cos(theta) * x + sin(theta) * y; *n = -sin(theta) * x + cos(theta) * y; }
請注意,參數類型現在是指向 double 的指標(即 double*)。
然後您可以呼叫函數如下:
trans(center_x, center_y, angle, &xc, &yc);
這也會正確修改xc和yc的值。
以上是向 C 函數傳遞參數時如何修改原始變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!