1. 程式人生 > >C++中引用型別和指標型別區別

C++中引用型別和指標型別區別

引用型別和指標型別區別

    引用型別是C++11引入的複合型別,所以C語言並沒有引用型別。

    一般在初始化變數時,初始值會被拷貝到新建的物件中。然而在定義引用時,程式把引用和它的初值繫結在一起,而不是將初值拷貝給引用。一旦初始化完成,引用將它的初始值物件繫結在一起。因為無法令引用重新繫結到另外一個物件,因此引用必須初始化。

    引用並非物件,它只是為一個已存在的物件所起的另外一個名字。引用即別名。

    引用本身並不是一個物件,所以不能定義引用的引用。

    指標型別

    引用型別和指標型別區別:

    1.引用型別是C++中的型別;

    2.引用型別的物件在定義時必須被初始化(形參除外),而指標型別物件在定義時並不需要必須被初始化;

 

    3.引用型別一旦初始化就不能被更改,而指標型別可以重新指向另一個物件。

相關推薦

[轉載]C++引用傳遞與指標傳遞區別(進一步整理)

這篇文章是在學習了編譯原理引數傳遞後對c++和Java按引用傳遞的不同表現產生疑問,在網上搜索找到的博文,這裡提出了按地址傳遞和按引用傳遞是不同的,按我的個人理解,Java的物件引數的傳遞,是按地址傳遞,而按地址傳遞,需要有一個傳遞到被呼叫函式的指向實

C#引用傳遞與指標傳遞區別

從概念上講。指標從本質上講就是存放變數地址的一個變數,在邏輯上是獨立的,它可以被改變,包括其所指向的地址的改變和其指向的地址中所存放的資料的改變。 而引用是一個別名,它在邏輯上不是獨立的,它的存在具有依附性,所以引用必須在一開始就被初始化,而且其引用的物件在其整個生命週

C++引用型別指標型別區別

引用型別和指標型別區別    引用型別是C++11引入的複合型別,所以C語言並沒有引用型別。    一般在初始化變數時,初始值會被拷貝到新建的物件中。然而在定義引用時,程式把引用和它的初值繫結在一起,而不是將初值拷貝給引用。一旦初始化完成,引用將它的初始值物件繫結在一起。因為

C++傳統列舉型別列舉的區別

傳統列舉型別定義舉例: enum Animal  //列舉型別名字 {        monkey, //列舉中的元素值        horse,        lion,        eleph

C++傳值引數引用引數指標怎樣區別

C++中傳值引數和引用引數怎樣區別呢? 看以下例子:#include<iostream>using namespace std;void swap(int a,int b){int temp;temp=a;a=b;b=temp;}main(){int a=3,b=

C#的isas操作符區別小結

devel 獲取 d3d 數據 bottom 技術 datagrid idv center 1. is 是驗證操作對象是不是自己希望的 運算公式:對象 is 類型 返回true:對象是指定類型 返回false:對象不是指定類型 2. as 是將對象轉換成指定類型

關於C++的繼承過載的區別

        C++中的很多特性光從概念上的話,很難做區分。或者說,概念讓人容易模糊,比如說函式過載和函式繼承。        先說過載,過載分為操作符過載和函式名過載,其中,操作符過載就是對運算操作符的原有功能進

《隨筆二十》—— C++的“ delete delete [] 的區別

  c++中對new申請的記憶體的釋放方式有delete和delete[]兩種方式,到底這兩者有什麼區別呢? 1.我們通常從教科書上看到這樣的說明: delete 釋放new分配的單個物件指標指向的記憶體 delete[] 釋放new分配的物件陣列指標指向的記

c++int,char的區別特性。

雖然談不上十分難懂或者十分重要,但是希望大家可以全面瞭解一下關於int 和char。 下面是轉載文章: 1.int型別和char型別的區別 比較下面三個定義式的區別: int i = 1; char i = 1; char i = ‘1’; int用來定義整型變數,char用來定義字元型變數

[轉載]C++的structclass的區別

C++中的struct對C中的struct進行了擴充,它已經不再只是一個包含不同資料型別的資料結構了,它已經獲取了太多的功能。 struct能包含成員函式嗎? 能! struct能繼承嗎? 能!! struct能實現多型嗎? 能!!! 既然這些它都能實現,那它和clas

C#結構體類的區別

結構體和類同樣能夠定義欄位,方法和建構函式,都能例項化物件,這樣看來結構體和類的功能好像是一樣的了,但是他們在資料的儲存上是不一樣的C#結構體和類的區別問題:這兩種資料型別的本質區別主要是各自指向的記憶體位置不同。傳遞類的時候,主要表現為是否同時改變了源物件。1.結構體是值型

【知識積累】C#結構體類的區別

【類】     類是對現實生活中一類具有共同特徵的事物的抽象。類的實質是一種資料型別,類似於int、char等基本型別,不同的是它是一種複雜的資料型別。因為它的本質是型別,而不是資料,所以不存

c++關於堆堆疊的區別

     從以往我們接觸c++這門語言開始就知道有堆和棧,棧我們一直稱之為堆疊,剛開始是個小白的時候就一直不明白堆疊到底是堆還是棧。   在C++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。       棧,就是那些由編譯器在需要的時候

C++Public StaticPrivate Static區別

Static: 靜態成員的關鍵字,表示不能例項化,在你執行的時候他自己已經在記憶體中開闢了塊空間,所以不用new, 可以直接呼叫。類似全域性變數。  特點:  1、訪問static成員,用類而不是例項化的物件;  2、static方法只能訪問static屬性;&nb

C++iostream.hiostream的區別

#include <iostream.h>非標準輸入輸出流 #include <iostream>標準輸入輸出流 C++中為了避免名字定義衝突,特別引入了“名字空間的定義”,即namespace。 1,當代碼中用<iostre

C# Flush DisposeClose的區別

【個人學習過程記錄,不一定準確】 你寫了一個程式,其中要對硬碟上的一個檔案操作,FileStream fs = new FileStream(fileName)這樣就是建立了一個檔案緩衝流,換句話的意思就是說你通過這條程式,計算機給了一一塊記憶體空間,但是呢這塊記憶體空

學習一下C#常用集合陣列的區別,雖然很基礎,但感覺很實用

在C#中,當我們想要儲存一組物件的時候,就會想到用陣列,ArrayList,List這三個物件了。那麼這三者到底有什麼樣的區別呢?我們先來了解一下陣列,因為陣列在C#中是最早出現的。 陣列 陣列有很多的優點,比如說陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且

C#索引器屬性的區別

索引器允許類或者結構的例項按照與陣列相同的方式進行索引取值,索引器與屬性類似,不同的是索引器的訪問是帶參的。索引器和陣列比較:(1)索引器的索引值(Index)型別不受限制(2)索引器允許過載(3)索引器不是一個變數索引器和屬性的不同點(1)屬性以名稱來標識,索引器以函式形式

C#抽象類介面的區別

大家都容易把這兩者搞混,我也一樣,在聽李建忠老師的設計模式時,他也老把抽象類說成介面,弄的我就更糊塗了,所以找了些網上的資料.    一、抽象類:    抽象類是特殊的類,只是不能被例項化;除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能聲明於抽象類中,且不包含任何

c++引用指標區別

指標和引用的區別: (1)當引用被建立時,它必須被初始化。而指標則可以在任何時候被初始化。 (2)一旦一個引用被初始化為指向一個物件,它就不能被改變為對另一個物件的引用。而指標則可以在任何時候指向另一個物件。 (3)不可能有NULL引用。必須確保引用是和一塊合法