C語言---指針與引用的區別

指針與引用的區別

      雖然使用引用 (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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章