c和c++的區別四【引用的使用以及注意事項】
1.引用的原理與指標相比較而言:
例如:
//(1)
int a = 10;
int &b = a;
b = 20;
//(2)
int *p = &a;
*p = 30;
(1)中b相當於是a的別名,對b進行改變其實就是對a進行改變;而在(2)中,指標p儲存a的位址,當對a進行改變的時候,通過指標p指向a所在的記憶體,並對a進行改變(也就是我們說的解引用);
2.引用的書寫方式?
步驟:(1)先寫成指標的形式;
(2)然後將指標 "*"改為「&」,並且把右邊所取位址的「&」去除掉,這就是寫引用的方法;
例如:
/*
int a = 10;
int *p = &a; ----> int &p = a;
int array[10] = ;
int (*array)[10] = &array; -----> int (&array)[10] = array;
//所以說在函式的引數傳遞方式中,引用比指標要安全的多,引用是陣列的整個記憶體空間
*/
3.引用變數需要開闢記憶體嗎?
例如:**如下:
通過上述的執行結果看出來:a的位址,和b的位址是一樣的,而我們之前說過引用變數b是變數a的別名,當我們訪問b的時候其實訪問的是儲存a的資料位址,所以說也就是我們在訪問b的時候,它會自己【解引用】到儲存a的位址;那麼引用到底佔不佔記憶體呢?
上述**的彙編如下:
對於p來說,先是將a的位址放入暫存器eax中,再將eax中得值放入p的位址中;
所以可以看出,引用變數b的底層實現也是乙個指標,是需要開闢記憶體的;所以在定義引用變數的時候必須初始化而且所要引用的變數要能取位址。
4.引用變數初始化後則不能被改變,但是引用具有傳遞性,即可以傳遞;
例如**:
C 引用,以及引用與指標的區別
在c 中不只是有取位址的意思,還有引用的意思。引用變數是乙個別名,也就是說,它是某個已存在變數的另乙個名字。一旦把引用初始化為某個變數,就可以使用該引用名稱或變數名稱來指向變數,其實可以把它想像成指標,但又區別於指標。引用示例 int r i double s d 引用很容易與指標混淆,它們之間有三...
C 複習(1) 引用和指標的區別
引用在定義時必須初始化,而指標沒有要求。引用在初始化時引用乙個實體後,就不能再引用其他實體,而指標可以在任何時候指向任何乙個同型別實 體。沒有null引用,但有null指標。在sizeof中含義不同 引用結果為引用型別的大小,但指標始終是位址空間所佔位元組個數 32位平台下佔4 個位元組 引用自加即...
指標和引用的區別 002 引用和指標
int 理解引用最好的方式 別名指標 指向另一種型別的符合型別,與引用類似,都是實現了對其它物件的簡介訪問。引用是另乙個物件的別名,指標本身就是物件,允許對指標賦值和拷貝,而且指標的生命週期內它可以先後指向幾個不同的物件 指標無須再定義時賦初值,和其他內建型別一樣,在塊作用域內定義的指標如果沒有被初...