引用型別是指儲存在記憶體堆上的資料型別,堆與棧是不一樣的,儲存在堆上的資料cpu不能直接讀取,需要使用乙個位址去查詢。
引用書面語中,引用指的是在說話或者寫作中引用現成的話,在計算機語言中,引用就是某一變數或者目標的別名,對引用的操作與對變數直接操作完全一樣,引用的宣告方法:型別識別符號&引用名=目標變數名
(1)指標是實體,引用是別名,沒有空間。
(2)引用定義時必須初始化,指標不用。
(3)指標可以改,引用不可以。
(4)引用不能為空,指標可以。
(5)sizeof(引用)計算的是它引用的物件的大小,而sizeof(指標)計算的是指標本身的大小。
(6)不能有null引用,引用必須與一塊合法的儲存單元關聯。
(7)給引用賦值修改的是該引用與物件所關聯的值,而不是與引用關聯的物件。
(8)如果返回的是動態分配的記憶體或物件,必須使用指標,使用引用會產生記憶體洩漏。
(9)對引用的操作即是對變數本身的操作。
電腦的記憶體是連續儲存,最基本的單位是位元組,你可以想像記憶體就是一排小房子,裡面住著不同型別的資料。每個小房子都有乙個編號,cpu在運算時通過這個編號到記憶體去獲取想要的資料。
比如上圖中定義了三個整形變數:
int i=3;
int j=6;
int k=9;
變數i存在記憶體中編號為2000的小房子那裡,而且它占用了4間小房子。所以下乙個變數j只能存在編號為2004的小房子那裡,而且它也占用了4間小房子。
我們在寫程式時使用變數名i,j,k,但cpu在實際計算時使用的是編號2000,2004和2008。變數只是在我們寫**和閱讀**時,起了個助記的作用。
下面總結一下:
變數的本質:
變數是一段實際連續儲存空間的別名,程式通過變數來申請並命名儲存空間,可以通過變數名使用儲存空間,變數所佔記憶體的大小取決於其所屬的資料型別。對cpu來說,根本沒有變數這個概念,cpu面對的是一段段大小不
一、解析方法不同的記憶體。
資料型別:
資料型別是建立變數的模子,可以理解為有固定記憶體大小和統一解析方法的記憶體的別名,用來為編譯器提供該型別資料需要的記憶體空間大小和資料的解析方法。如int型別資料就是佔4個位元組,按照有符號整形資料進行操作。double型別資料佔8個位元組,按照高精度浮點型進行解析。
引用和指標的關係
引用在定義時必須初始化,指標沒有要求 int rnum 未初始化不能通過編譯 int pnum 可以 2.一旦乙個引用被初始化為指向乙個物件,就不能再指向 其他物件,而指標可以在任何時候指向任何乙個同型別物件 int inum 10 int inum2 20 int rnum inum rnum i...
c 中引用和指標的關係
引用的格式 type ref var 1.引用只是變數的別名,不開闢新的空間,與原變數使用同一塊記憶體單元。指標是乙個新的變數,有自己的儲存空間。2.引用必須在宣告時就初始化,指標則可以在任何時候初始化。3.引用不能為空,必須總是引用乙個物件。指標可以為空,不指向任何地方。4.引用一旦被初始化,就不...
指標和引用的關係 以及二重指標和指標引用
指標和引用概念 指標和引用關係 指標引用和二重指標 平常寫 的時候大家多用到指標,卻很少臨幸引用這個東西,引用和指標其實分不開。指標的是乙個物件的位址,我們通過位址來對這個物件進行操作,而引用則是乙個物件的別名,好比你叫張三,別名小張,我要打小張,張三必定挨打。所以我們通過對引用的物件進行操作,就修...