1、传值:变量名作为形参、实参,形参改变不影响实参改变,形参、实参不在一个内存单元
#include "iostream.h"
void change(int a,int b){
a = 10;
b = 20;
cout<<"change: "<<endl;
cout<<&a<<" "<<&b<<endl;
cout<<a<<" "<<b<<endl;
}
int main(){
int a = 1;
int b = 2;
cout<<"main: " <<endl;
cout<<&a<<" "<<&b<<endl;
cout<<a<<" "<<b<<endl;
change(a,b);
cin>>a;
}
2、传递变量的指针:形参是指针变量,实参是一个变量地址,调用函数时,形参指向实参变量,形参改变实参也改变
#include "iostream.h"
void change(int *a,int *b){
*a = 10;
*b = 20;
cout<<"change: "<<endl;
cout<<*a<<" "<<*b<<endl;
cout<<a<<" "<<b<<endl;
}
int main(){
int a = 1;
int b = 2;
cout<<"main: "<<endl;
cout<<a<<" "<<b<<endl;
cout<<&a<<" "<<&b<<endl;
change(&a,&b);
cin>>a;
return 0;
}
3、传址:使用指针修改实参
#include "iostream.h"
void change(int &a,int &b){
a = 10;
b = 20;
cout<<"change: "<<endl;
cout<<&a<<" "<<&b<<endl;
cout<<a<<" "<<b<<endl;
}
int main(){
int a = 1;
int b = 2;
cout<<"main: "<<endl;
cout<<a<<" "<<b<<endl;
cout<<&a<<" "<<&b<<endl;
change(a,b);
cin>>a;
return 0;
}