指標和引用的區別 002 引用和指標

2021-10-11 13:31:09 字數 1459 閱讀 5569

int

//理解引用最好的方式:別名
指標:指向另一種型別的符合型別,與引用類似,都是實現了對其它物件的簡介訪問。

引用是另乙個物件的別名,指標本身就是物件,允許對指標賦值和拷貝,而且指標的生命週期內它可以先後指向幾個不同的物件

指標無須再定義時賦初值,和其他內建型別一樣,在塊作用域內定義的指標如果沒有被初始化,也將擁有乙個不確定的值。

引用必須初始化,並且一旦定義了引用就無法再繫結到其他物件。而指標無須在定義時賦初值,也可以重新賦值讓其指向其他物件。

取位址符&

int
指標與它所指向的型別要嚴格匹配

double
解引用符: p就是得到指標所指的物件

指標和引用&*的理解要結合上下文

//下面的所有指標和引用都是針對i的位址進行操作的
不指向任何物件的指標,c++11中引入了nullptr

int
指標和引用都是對其它物件的間接訪問,引用本身並不是乙個物件,一旦定義了引用,就無法令其再繫結到別的變數上,到那時指標和它存放的位址沒有這種限制,給指標賦值就是令它指向乙個新的物件

int
void * 是從 c語言那裡繼承過來的,可以指向任何型別的物件。而其他指標型別必須要與所指物件嚴格匹配。void 可以存放任何物件的位址,乙個void * 指標存放乙個位址。它能做的操作有限,不能直接操作void指向的物件,因為我們並不知道他指向的型別。

void *指標的作用

1. 與別的指標比較

2. 作為函式的輸入輸出

3. 賦值給另乙個void*指標

//以void*的視角來看記憶體空間僅僅是記憶體空間,沒辦法訪問記憶體空間所存的物件

int test = 1;

void *x = &test;

// *x = 11; //非法無法操作

cout給定指標 p,你能知道它是否指向了乙個合法的物件嗎?如果能,敘述判斷的思路;如果不能,也請說明原因

​ 不能,因為首先要確定這個指標是不是合法的,才能判斷它所指向的物件是不是合法的。

//未避免歧義,定義指標時將指標和變數緊挨著寫

的個數確定指標的級別,*表示指標的指標

***表示指標的指標

int
引用 本身不是乙個物件,因此不能定義指向引用的指標,但指標式物件,所以存在對指標的引用

//比較複雜的指標或引用的宣告語句,從右向左閱讀
這節主要學習了兩種型別,指標和引用,二者的區別如下

C (二)引用和指標

引用不是定義乙個新的變數,而是給乙個已經定義的變數重新起乙個別名。定義的格式是 型別 引用變數名 已定義過得變數名 引用的特點 1 乙個變數可以取多個別名 2 引用必須初始化 3 引用只能在初始化的時候引用一次,不能改變為再引用其他的變數。include using namespace std vo...

C 複習(1) 引用和指標的區別

引用在定義時必須初始化,而指標沒有要求。引用在初始化時引用乙個實體後,就不能再引用其他實體,而指標可以在任何時候指向任何乙個同型別實 體。沒有null引用,但有null指標。在sizeof中含義不同 引用結果為引用型別的大小,但指標始終是位址空間所佔位元組個數 32位平台下佔4 個位元組 引用自加即...

指標引用和引用指標的區別

c 在傳參的過程中,指標 和指標引用 是有區別的。雖然,我們往往可以通過傳指標然後通過間址訪問來修改指標所指向物件的值,同樣,通過引用也可以直接修改物件的值。但是,當傳指標的時候有乙個問題,就是,我們雖然可以通過指標來修改指標所指向物件的值,但是我們沒有不能直接修改指標的內容 也就是指標變數存放的位...