指針與引用的區別
雖然使用引用 (reference)和指針都可間接訪問另一個值,但它們之間有兩個重要區別。第一個區別在於引用總是指向某個對象:定義引用時沒有初始化是錯誤的。第二個重要區別則是賦值行爲的差異:給引用賦值修改的是該引用所關聯的對象的值,而並不是使引用與另一個對象關聯。引用一經初始化,就始終指向同一個特定對象(這就是爲什麼引用必須在定義時初始化的原因)。
#include<iostream>
using namespace std;
int main()
{
int i=3,j=4;
int *p=&i,*q=&j;
int &s=i,&k=j;
cout<<"i:"<<i<<" *p:"<<*p<<" &s:"<<s<<endl;//print 3 3 3
cout<<"j:"<<j<<" *q:"<<*q<<" &k:"<<k<<endl;//print 4 4 4
p=q;//p不在指向i,而是轉作指向j,即指針q所指向的對象,即指針的賦值,是改變指針所關聯的對象
//賦值結束,i的值並不改變
cout<<"i:"<<i<<" *p:"<<*p<<endl;//print 3 4
cout<<"j:"<<j<<" *q:"<<*q<<endl;//print 4 4
s=k;//因爲在引用中,s始終和變量i關聯,k始終和變量j關聯,因此該賦值,改變了i的值
//賦值結束,i的值已經改變
cout<<"i:"<<i<<" &s:"<<s<<endl;//print 4 4
cout<<"j:"<<j<<" &k:"<<k<<endl;//print 4 4
system("pause");
return 0;
}