函數中的參數修改
在函數中,修改參數的值可能會也可能不會影響 C 中的呼叫函數。考慮以下範例:
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 中,預設參數傳遞方法是按值調用,這意味著參數的副本將傳遞給函數。因此,修改 trans 中的 m 和 n 不會影響 xc 和 yc。
為了確保函數內參數的變更反映在呼叫函數中,可以使用參考。在 C 中,引用提供了指標的替代方案,其行為類似於變數的別名。透過使用引用,可以直接修改原始變數:
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; } int main() { trans(center_x, center_y, angle, xc, yc); }
這種情況下,當xc 和yc 傳遞給trans 時,它們被視為原始變數的別名,允許trans 修改它們的值
在C 語言中,類似的方法是將指標或位址傳遞給變數而不是它們的值。然而,在 C 中使用引用通常被認為更方便和安全。
以上是參數修改如何影響 C 中的函數呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!