指標是一塊記憶體的位址值,而引用是一塊記憶體的別名。
從概念上講。指標從本質上講就是存放變數位址的乙個變數,在邏輯上是獨立的,它可以被改變,包括其所指向的位址的改變和其指向的位址中所存放的資料的改變。
而引用是乙個別名,它在邏輯上不是獨立的,它的存在具有依附性,所以引用必須在一開始就被初始化,而且其引用的物件在其整個生命週期中是不能被改變的(自始至終只能依附於同乙個變數)。
引用:下面附上一段**以便理解抽象的概念:
#include
#include
using namespace std;
int main()
從圖中我們可以看出:
d=c並不改變d的位址,且d與b位址相同,
所以引用不能重新繫結並非意味不能 重新賦值,重新賦值只代表引用初始化時所繫結物件重新賦值
而指標p1則在指向a的位址後可重新指向c的位址,p1所指物件也隨之改變。
例如int i=4;
int *p=&i;
左側的*可看做與int一起組成的復合型別 int *,代表指向實數型別的指標
而右側的&則為取位址符,p指向i的位址。
除了在定義語句中,一般情況下
int a = 5, b = 10;
int *p;
p = &a;
p = &b; //p指向b(取b的位址)
*p = 2; //*p相對於b,即b=2
注意:只有對指標的引用,沒有指向引用的指標!(因為引用本身不是物件)
一句話原則:從右向左讀,越靠近變數的符號越說明其本質
eg:int *&r=p;
&說明r的型別是引用,*說明 這個引用 是對指標的引用。
C odr用法案例詳解
the main module.file odr test1.cpp include void module1 print declaration of an exeternal function inline int f1 class a const double c 4.2 constexpr ...
MFC LoadImage用法案例詳解
目錄 handle loadimage hinstance hinst,若引導程式外部資源傳null,否則一般傳afxgetinstancehandle lpctstr lpszname,名稱或全路徑 uint utype,型別 image bitmap或image icon或image curso...
C pictureBox用法案例詳解
picturebox 控制項可以顯示來自位圖 圖示或者元檔案,以及來自增強的元檔案 jpeg 或 gif 檔案的圖形。如果控制項不足以顯示整幅圖象,則裁剪圖象以適應控制項的大小。展示了控制項的sizemode四種格式 最好的應該是zoom,在不發生形變的條件下,對進行縮放。sizemode auto...