引用與指標

2021-05-28 12:52:53 字數 1482 閱讀 2520

引用就是物件的另乙個名字,在實際的程式中,引用主要用作函式的形式引數。引用是一種復合型別,通過在變數名前新增「&」符號來定義。

復合型別是指用其他型別定義的型別。在引用的情況下,每一種引用型別都「關聯到」某一其他型別。引用必須用與該引用同型別的物件初始化。當引用初始化後,只要該引用存在,它就保持繫結到初始化時指向的物件,不可能將引用繫結到另乙個物件。

const 引用時指向const物件的引用,具體介紹參見const介紹文章。

下面是引用用法的一些例子:

int ival = 1024;

int &refval = ival;

int &refval2;                //錯誤

refval+=2;

int i = 1024,i2 = 2048;

int &r = i,&r2 = i2;

const int ival = 1024;

const int &refval = ival;

int &ref2 = ival;            //錯誤

指標用於指向物件,儲存的是另乙個物件的位址。

有兩種風格的宣告方式,如string *str;或string* str;不能說哪種風格更好,重要的是選擇一種並持續使用。

0值常量表示式;型別匹配的物件位址;同型別的另乙個有效指標;另一物件之後的下一位址;

double pi = 3.14;

double *pd = π

void *pv = π

pv = pd;

引用總是指向某個物件:定義引用時沒有初始化是錯誤的,引用一經初始化,就始終指向同乙個特定物件。

給引用賦值修改的是該引用所關聯的物件的值,而並不是使引用與另乙個物件關聯,也是引用只被初用於指定同一物件導致的。如下:

int ival = 1024,ival2 = 2048;

int *pi = &ival,*pi2 = &ival2;

pi = pi2;        //pi指向了ival2

int &ri = ival,&ri2 = ival2;

ri = ri2;         //將ival2賦值給ival

指向const物件的指標

const int intval = 43;

const void *cpv = &intval;     //正確

void *pv = &intval;                  //錯誤

const物件指標,允許把非const物件的位址賦給該指標,但是不允許直接修改其所指物件的值(本質上來說,由於沒有辦法分辨const指標所指的物件是否為const,系統會把它所指的所有物件都視為const)。看下例:

const int intval = 43;

const void *cpv = &intval;

int intval2 = 42;

cpv = &intval2;

*cpv = 24;           //錯誤

指標與引用

摘自 高質量c 程式設計 指標與引用,在more effective c 的條款一有詳細講述,我給你轉過來 條款一 指標與引用的區別 指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用...

指標與引用

include iostream using namespace std void testref int i 10 引用不可以為空,他是乙個物件的別名 int ref i ref cout i 00824f1e mov dword ptr i 1 把i的位址傳入eax 並把eax指標的位址傳給re...

引用與指標

引用有什麼作用呢?看下面 就知道了 cpp view plain copy include using namespace std intmain 第一行輸出 ref 12,num 12 第二行輸出 ref 16,num 16 第三行輸出 ref 18,num 18 由上面三行輸出可以看出引用ref...