首頁 >後端開發 >C++ >如何在 C 中修改函數參數並反映呼叫者的變化?

如何在 C 中修改函數參數並反映呼叫者的變化?

Barbara Streisand
Barbara Streisand原創
2024-12-10 12:16:10209瀏覽

How Can I Modify Function Parameters and Reflect Changes in the Caller in 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;
}

如果您從同一檔案中呼叫trans 如下:

trans(center_x,center_y,angle,xc,yc);

xc 和yc 的值不會函數內修改。要實現此目的,您有兩個選擇:

  1. 在C 中使用引用:

    • 添加號(&)函數中每個參數m 和 n先前定義:

      void trans(double x, double y, double theta, double& m, double& n)
    • 在呼叫者中,傳遞不含&符號的變數:

      trans(center_x, center_y, angle, xc, yc);
  2. 使用指標C:

    • 改變函數定義以接受指標:

      void trans(double x, double y, double theta, double* m, double* n)
    • 在呼叫者中,傳遞函數的位址變數:

      trans(center_x, center_y, angle, &xc, &yc);

透過使用任一方法,xc和 yc 的值將在 trans 函數內修改,因為它們現在是透過引用傳遞的或指標。這允許函數直接修改呼叫者中的原始變數。

以上是如何在 C 中修改函數參數並反映呼叫者的變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn