首頁 > 後端開發 > C++ > 向 C 函數傳遞參數時如何修改原始變數?

向 C 函數傳遞參數時如何修改原始變數?

DDD
發布: 2024-12-27 04:28:28
原創
341 人瀏覽過

How Do I Modify Original Variables When Passing Parameters to a C   Function?

透過引用傳遞參數與函數中的值

考慮以下程式碼片段:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板