c++兼容指针
#include"iostream"
using namespace std;
//默认值传递,不会改变原始数据,不会交换
void swap1(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
//通过指针直接对原始数据修改
void swap2(int *p,int*q)
{
int t;
t=*p;
*p=*q;
*q=t;
}
//通过引用直接对原始数据修改,相当于起了别名。a的别名x,b的别名y.
void swap3(int& x,int& y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a=3;
int b=4;
swap1(a,b);
cout<<a<<" "<<b<<endl;;
a=3,b=4;
swap2(&a,&b);
cout<<a<<" "<<b<<endl;;
a=3,b=4;
swap3(a,b);//相当于起了别名。a的别名x,b的别名y.直接对a,b原始数据操作
cout<<a<<" "<<b<<endl;;
}
加了引用和不加引用,写法的区别在函数声明,但内部实现和不加引用相同。但是他却可以对原始数据直接操作。
加入const 避免错误修改,参数值。
局部变量生存期有限。回收结果会错。
#include"iostream"
using namespace std;
int &sum(int &num1,int& num2)
{
num1++;
num2++;
return num1+num2;//会报错。
}
int main()
{
int num1=10,num2=15;
int &result=sum(num1,num2);
cout<<"result="<<result<<endl;//输出result=16. 返回了最后一个参数的引用。
}