1.值传递(实参值不变)
#include<iostream>
using namespace std;
//1.值传递(实参值不变)
void Swap01(int a,int b){
int temp=a;
a=b;
b=temp;
cout<<"形式参数a="<<a<<endl;
cout<<"形式参数b="<<b<<endl;
}
int main(){
int a=10;
int b=20;
Swap01(a,b);//这是值传递,形参不会修饰实参
//形参改变了,实参并没有
cout<<"-------------"<<endl;
cout<<"实际参数a="<<a<<endl;
cout<<"实际参数b="<<b<<endl;
system("pause");
return 0;
}
2.址传递(实参值变化)
#include<iostream>
using namespace std;
//1.址传递(实参值变化)
void Swap02(int* a,int* b){
int temp=*a;
*a=*b;
*b=temp;
cout<<"形式参数a="<<*a<<endl;
cout<<"形式参数b="<<*b<<endl;
}
int main(){
int a=10;
int b=20;
Swap02(&a,&b);//这是址传递,形参会修饰实参
//形参改变了,实参也改变了
//什么是址传递,就是将变量的地址空间传过去
//在地址空间中改值。
cout<<"-------------"<<endl;
cout<<"实际参数a="<<a<<endl;
cout<<"实际参数b="<<b<<endl;
system("pause");
return 0;
}
3.引用传递(实参值改变)
#include<iostream>
using namespace std;
//1.引用传递(实参值改变)
void Swap03(int &a,int&b){
int temp=a;
a=b;
b=temp;
cout<<"形式参数a="<<a<<endl;
cout<<"形式参数b="<<b<<endl;
}
int main(){
int a=10;
int b=20;
Swap03(a,b);//这是引用传递,形参会修饰实参
//形参改变了,实参也改变了
cout<<"-------------"<<endl;
cout<<"实际参数a="<<a<<endl;
cout<<"实际参数b="<<b<<endl;
//通过引用参数产生的效果同按地址传递是一样的。引用的语法更清楚简单
system("pause");
return 0;
}