参数传递有两种方式
1.值传递
2.地址传递
- 1.参数为指针变量
- 2.参数为引用类型
- 3.参数为数组名
把实参的值传送给局部工作区相应的副本中,函数使用这个副本执行必要的功能。函数修改的是副本的值,实参的值不变。
void main()
{float a,b;
cin>>a>>b;
swap(a,b);
cout<
当被调用函数执行完毕,那么m,n从内存中就释放了,返回到函数调用的地方,a,b并没有改变。
地址传递
指针变量作参数
1.形参变化影响实参
void main()
{float a,b,*p1,*p2;
cin>>a>>b;
p1=&a;p2=&b;
swap(p1,p2);
cout<
形参变化不影响实参
void main()
{float a,b,*p1,*p2;
cin>>a>>b;
p1=&a;p2=&b;
swap(p1,p2);
cout<
数组名做参数
传递的是数组的首地址
对形参数组所做的任何改变都将反映到实参数组中
void main (void){
char a[10]="hello";
sub(a);
cout<
输出是:world
引用类型做参数
void main(){
float a,b;
cin>>a>>b;
swap(a,b);
cout<
- 引用类型可以简单地理解为共用同一个地址
- 引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而一般变量作参数,形参和实参占用不同的存储单元。因此,当参数传递的数据量大时,用引用传递的时间和空间效率比较好。
- 指针参数容易产生错误阅读性差



