非引用形参
void show(int a){
a=a+1;
}
int a=1;
show(a)///----a=1
//因为非引用参数,真正的a没传进去,而是a的copy
1.在调用函数中使用指针进行交换【非引用指针形参】
非引用:传的都是copy,但是是指针copy,因为指针即地址,地址copy,还是原来的地址。
#include <iostream>
using namespace std;
void swap(int *a, int *b)
{
//形参指针a代替实参指针相当于*a=pa,指向同一值
int temp ;
temp = *a;
*a = *b;
*b = temp;
//int *temp=new int;//给指针动态分配内存
//*temp=*a;
//...
//int *temp;
//temp = a; 相当于temp初始化了,所以不会报错
}
int main()
{
int m = 3;
int n = 4;
int *pa = &m;
int *pb = &n;
cout<<"交换前数值:m="<<*pa<<" n="<<*pb<<endl;
swap( pa , pb );
cout<<"交换后数值:m="<<*pa<<" n="<<*pb<<endl;
return 0;
}
2.形参为引用【引用形参】
//a是pa的别名,对a操作就是对pa操作
void swap(int& a,int& b)
{
int temp=a;
a=b;
b=a
}
swap(pa,pb);
3.加减法
void swap(int& a,int& b)//6,1
{
a=a+b;7
b=a-b;
a=a-b;
}
4.位运算 异或^
a=a^b;//相当于a=a+b
b=a^b;//
a=a^b;