指針和引用比較

首先指針和引用都是地址的概念。

c語言沒有引用,c++有引用,c++11前只有一級引用,c++11之後支持多級引用

引用定義:引用是一個變量的別名,不能爲空,必須初始化,引用初始化的值必須可以取地址,一經引用不能修改。引用的大小是所指向變量的大小。

指針可能成爲空指針或者野指針,解引用前要判空,引用比指針安全,不存在空引用。

定義引用底層相當於定義了一個指針引用變量也是佔內存的,用來存儲被引用變量的地址,不過程序中訪問引用,就做了解引用操作,給人一種引用變量不佔內存的假象。

彙編層面來看:

int main()
{
	int a = 10;
	int &b = a;
	//lea         eax,[a] 
	//mov         dword ptr [b],eax 
	int *p = &a;
	//lea         eax,[a] 
	//mov         dword ptr [p],eax 
	b = 20;
	//mov         eax,dword ptr [b] 
	//mov         dword ptr [eax],14h 
	*p = 20;
	//mov         eax,dword ptr [p] 
	//mov         dword ptr [eax],14h 
	return 0;
}
可以看到彙編層面是完全一樣的。

對於其他不同點,可以在程序中體會


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