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. 返回了最後一個參數的引用。
}