今天遇到一个关于实参传入形参后对形参赋值会不会改变实参的问题,有点绕,看一下例子:
#include <stdio.h>
int test(int m) {
m=5;
}
int test1(int &m) {
m=5;
}
int main() {
int a=0;
test(a);
printf("a1=%d\n", a);
a=0;
test1(a);
printf("a2=%d\n", a);
return 0;
}
运行结果:
a1=0
a2=5
1.函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。比如test(int m);
2.test1(int &m),关键在于int &m:int &m的m是一个整数型变量的别名(引用)。修改m实际修改的是整数型变量自己。