Home >Backend Development >C++ >How Do Parameter Modifications Affect Calling Functions in C ?
Parameter Modification in Functions
In a function, modifying a parameter's value may or may not affect the calling function in C . Consider the following example:
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; }
Invoking this function with trans(center_x, center_y, angle, xc, yc) raises the question: will xc and yc be modified?
In C , the default parameter passing method is call-by-value, meaning that a copy of the argument is passed to the function. Thus, modifying m and n within trans will not affect xc and yc.
To ensure that changes to parameters within the function are reflected in the calling function, you can use references. In C , references provide an alternative to pointers and behave like aliases for variables. By using references, you can modify the original variables directly:
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); }
In this case, when xc and yc are passed to trans, they are treated as aliases for the original variables, allowing trans to modify their values directly.
In C, a similar approach involves passing pointers or addresses to the variables instead of their values. However, using references in C is generally considered more convenient and safe.
The above is the detailed content of How Do Parameter Modifications Affect Calling Functions in C ?. For more information, please follow other related articles on the PHP Chinese website!