c++中的参数传递分为三种:
1、值传递
2、地址传递
3、引用传递
1、值传递(形参值不影响实参值):
例:
//参数以值进行传递
void func(int param1,int param2){
cout<<param1+param2<<endl;
}
main(){
int a = 2,b=3;
func(a,b);
}
因为参数传递形式为值传递,在内存中,只是将a和b的值复制到param1和param2,自此之外无任何联系。故param1与param2改变不影响a和b的值。
2、地址传递(形参值影响实参值):
例:
//参数以地址进行传递
void func(int* param1,int* param2){
cout<<*param1+*param2<<endl;//*param1和*param2在此是取值
}
main(){
int a = 2,b=3;
func(&a,&b);//传入a和b的地址
}
因为参数传递形式为地址传递,在内存中,a和param1同指一块内存地址,b和param2同指一块内存地址,故都是对同一块内存操作。故param1与param2改变影响a和b的值。
3、引用传递(形参值影响实参值)
例:
//参数以引用进行传递
//int ¶m1 = a; int ¶m2 = b;
void func(int& param1,int& param2){
cout<<param1+param2<<endl;
}
main(){
int a = 2,b=3;
func(a,b);
}
因为参数传递形式为引用传递,在内存中,相当于又使另一个变量指向同一个值,故都是对同一块内存操作。故param1与param2改变影响a和b的值。
注:本文章仅为学习路线中感悟,有错误之处还请指出!