In the C function, the reference parameter passes the variable address, and the modification of the parameter affects the original variable, while the pointer parameter passes the pointer to the address, and the modification of the parameter does not affect the original variable.
The difference between reference parameters and pointer parameters in C functions
In C, a function can accept reference parameters or pointer parameters. Although both are used to pass the address of a variable, there are some key differences between them.
Reference parameters
Reference parameters pass the address of the variable through the symbols &
. It essentially passes the variable itself, meaning any changes made to that reference parameter are reflected in the original variable.
Code example:
void swap(int& a, int& b) { int temp = a; a = b; b = temp; } int main() { int x = 5; int y = 10; swap(x, y); // 交换 x 和 y 的值 cout << x << " " << y << endl; // 输出:10 5 }
Pointer parameters
Pointer parameters pass variables through the symbols *
address. It essentially passes a pointer to the memory address of the variable, which means that any changes made to the pointer parameter are not reflected in the original variable.
Code sample:
void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int x = 5; int y = 10; swap(&x, &y); // 交换 x 和 y 的值 cout << x << " " << y << endl; // 输出:5 10 }
Difference summary
Features | Reference parameters | Pointer parameters |
---|---|---|
Transmission method | Reference variable address | Pass pointer address |
Modification of parameters | Change original variable | No Will change the original variable |
Memory usage | Pointer size | Reference size |
Purpose | Pass actual parameters | Pass large objects or complex structures |
Practical case
Consider a need Function that swaps two elements.
Use reference parameters:
void swap(int& a, int& b) { int temp = a; a = b; b = temp; }
Use pointer parameters:
void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }
Which method is better depends on the involved specific situation. If two simple values need to be exchanged, reference parameters are more appropriate. However, if you need to exchange large objects or complex structures, a pointer parameter is more suitable as it avoids copying large chunks of data inside and outside the function.
The above is the detailed content of The difference between reference parameters and pointer parameters in C++ functions. For more information, please follow other related articles on the PHP Chinese website!