變數在記憶體中的操作其實是需要經過2個步驟的:
1)找出與變數名相對應的記憶體位址。
2)根據找到的位址,取出該位址對應的記憶體空間裡面的值進行操作。
什麼是指標?指標變數和任何變數一樣,也有變數名,和這個變數名對應的記憶體空間,只是指標的特殊之處在於:指標變數相對應的記憶體空間儲存的值恰好是某個記憶體位址。這也是指標變數區別去其他變數的特徵之一。例如某個指標的定義如下:
int x =5;
int*ptr =
&x;
ptr即是乙個指正變數名。通過指標獲取這個指標指向的記憶體中的值稱為dereference。
reference是一種特殊的pointer。reference在記憶體中的儲存結構應該跟上面的指標是一樣的,也是儲存的一塊記憶體的位址。
reference 和 pointer主要有以下3中不同點:
1)reference不需要dereference即可直接獲取到指向的記憶體空間的值。例如上例中,直接y就可以獲取reference y所指向的記憶體空間的值,而不需要*y來獲取。
2)reference的賦值操作也不需要取位址符來賦值,可以直接通過變數名,例如上例中,int &y = x, 而不需要 int &y = &x;
reference 在申明的時候就必須要有初始值,而且reference變數指向的記憶體位址是不能變化,不像pointer那樣可以很靈活的重新指向其他位址。
C 指標和引用
在深入介紹之前我們首先來看一下指標和引用的定義 指標和引用的區別,然後分別針對指標和引用展開討論,深入細節為何有這些差異。指標和引用的定義,下面用通俗易懂的話來概述一下 而宣告指標是可以不指向任何物件,也正是因為這個原因,使用指標之前必須做判空操作,而引用就不必。其次,引用不可以改變指向,對乙個物件...
C 引用和指標
引用和指標看上去差不多,看上去差不多,其實男寶寶和女寶寶是不一樣的 用起來還是有一定差距。本人菜鳥僅將遇到的問題記錄備案,以便日後翻查 ptrfunc.h ifndef ptrfunc h define ptrfunc h typedef int func int,int struct aa end...
C 指標和引用
有了變數名,為什麼還需要乙個別名呢?c 之所以增加引用型別,主要是把它作為函式引數,以擴充函式傳遞資料的功能 到目前為止我們介紹過函式引數傳遞的兩種情況 1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的 如果在執行函式期間形參的值發生變化,並不傳回給實參 因為在呼叫函式時,形參和實...