C指標與引用有何區別,淺談C 中指標和引用的區別

2022-05-09 10:40:03 字數 4467 閱讀 3029

1樓:哎呀

c++中:

1、指標,通俗的理解就是,把記憶體的位址記下來,以便直接跳到相應的記憶體位址上去取資料,或執行指令。(指標c++中算是比較高階的玩法,非常規的指標值改動常常會造成莫明的錯誤,然而有些高明的指標運用可以事半功倍。但在當前模組化程式設計中,一般不建議隨意動用非常規的指標值改動)。

c++的常規指標運用中,一般以函式參變數帶入指標變數稍多一些,實際作用常常是用於影響函式體外的數值、資料。

2、引用,這個概念是物件導向程式設計才有的。引用,指的是取某個物件的位址,因為也是取位址的,所以,某些時候會讓程式設計師感覺它很象是指標。事實上,個人認為,它的本質還是指標,只是在使用引用的情況下,程式設計環境在對**的校驗過程中,一般會對於一些想作非常規的位址修改的**判錯,從而減少不可預期錯誤的發生。

比如你定義了乙個物件aab,然後,你讓aab指向aab+1那個位址,如下**:aab = aab+1,編譯器就會拒絕。而如果aab是乙個指標的話,程式設計器就會放行進行編譯。

2樓:醉風林天

**寫法不一樣,實際上是同樣的東西

**c++中指標和引用的區別

3樓:千鋒教育

指標和引用的聯絡與區別

★ 相同點:

1. 都是位址的概念;

指標指向一內塊記憶體,它的容內容是所指記憶體的位址;引用是某塊記憶體的別名。

★ 區別:

1. 指標是乙個實體,而引用僅是個別名;

2. 引用使用時無需解引用(*),指標需要解引用;

3. 引用只能在定義時被初始化一次,之後不可變;指標可變;

4. 引用沒有 const,指標有 const;

5. 引用不能為空,指標可以為空;

6. 「sizeof 引用」得到的是所指向的變數(物件)的大小,而「sizeof 指標」得到的是指標本身(所指向的變數或物件的位址)的大小;

7. 指標和引用的自增(++)運算意義不一樣;

8.從記憶體分配上看:程式為指標變數分配記憶體區域,而引用不需要分配記憶體區域。

c++中引用與指標的區別

4樓:go陌小潔

c++中指標與引用的區別:

1.定義和性質的區別:

(1)指標:指標是乙個變數,只不過這個變數儲存的是乙個位址,指向記憶體的乙個儲存單元;而引用跟原來的變數實質上是同乙個東西,只不過是原變數的乙個別名而已。如:

int a=1;int *p=&a;

int a=1;int &b=a;

上面定義了乙個整形變數和乙個指標變數p,該指標變數指向a的儲存單元,即p的值是a儲存單元的位址。

而下面2句定義了乙個整形變數a和這個整形a的引用b,事實上a和b是同乙個東西,在記憶體佔有同乙個儲存單元。

(2)可以有const指標,但是沒有const引用;

(3)指標可以有多級,但是引用只能是一級(int **p;合法 而 int &&a是不合法的)

(4)指標的值可以為空,但是引用的值不能為null,並且引用在定義的時候必須初始化;

(5)指標的值在初始化後可以改變,即指向其它的儲存單元,而引用在進行初始化後就不會再改變了。

(6)"sizeof引用"得到的是所指向的變數(物件)的大小,而"sizeof指標"得到的是指標本身的大小;

(7)指標和引用的自增(++)運算意義不一樣;

2.指標和引用作為函式引數進行傳遞時的區別。

(1)指標作為引數進行傳遞:

#include

using namespace std;

void swap(int *a,int *b)

int main(void)

int main(void)

輸出結果為:0x22ff44 1

指標p不為null

5樓:幻夢·人生

相同點:

都是位址的概念;

指標指向一塊記憶體,它的內容是所指記憶體的位址;而引用則是某塊記憶體的別名。

不同點:

指標是乙個實體,而引用僅是個別名;

引用只能在定義時被初始化一次,之後不可變;指標可變;引用「從一而終」,指標可以「見異思遷」;

引用不能為空,指標可以為空;

「sizeof引用」得到的是所指向的變數(物件)的大小,而「sizeof指標」得到的是指標本身的大小;

指標和引用的自增(++)運算意義不一樣;

引用是型別安全的,而指標不是(引用比指標多了型別檢查)

6樓:匿名使用者

引用就是重新命名:

int a = 0;

int& b = a;

就是給 a 這個變數重新取乙個名字.

所以 你在使用 a或b的時候其實都是使用的同乙個變數.

比如:有人個人叫張三。張三的好朋友常常叫張三 小張。

也就是說 張三和小張是同乙個人。

7樓:笨笨de世界

引用是別名,共享一塊記憶體空間,而指標是要單獨佔4位元組的記憶體空間的,裡面存的是另一塊記憶體位址的索引

c++引用型別和指標型別的區別

8樓:福喜

能用引用完成的都可以用指標完成.

能用指標完成的不一定能用引用完成.

引用正是遮蔽了指標 "不安全 "但卻 "功能強大 "的那部分.

引用不能為空,

所以在程式中的引用都是有值的,不必檢查該引用是否為空。

而指標則可以為空。你可以定義乙個指向null的指標,這就是和引用的最大區別,

所以在程式中使用指標之前必須檢查該指標是否為空

區別主要有三條

1、引用必須初始化,指標可以任何時候初始化

2、引用後不能再引用其他對像,指標則可以

3、引用不能為空,指標可以為空

(1)引用被建立的同時必須被初始化(指標則可以在任何時候被初始化)。

(2)不能有null引用,引用必須與合法的儲存單元關聯(指標則可以是null)。

(3)一旦引用被初始化,就不能改變引用的關係(指標則可以隨時改變所指的物件)。

9樓:南京葉巨集

從內部看,本質一樣,存放的都是指向的單元位址,但處理含義不一樣。

引用是用位址直接表示所指向的單元,不需要加*號就能訪問指向單元,但引用受到限制。原因是只為子程式傳址用的。

而指標只存放某單元的位址,若訪問這個單元必須在指標前加*號。

其實對引用型別,可以用特殊辦法繞開引用的限制,象指標一樣任意改變引用的指向。

10樓:

引用是變數的別名,指標是變數的位址;

引用不能獨立存在,定義時必須初始化,指標則不然;

對某變數的引用的操作就是對該變數本身的操作,能引起變數永久性改變,而對某變數指標的操作並不影響變數值,只有通過指針對其目標的操作才能永久性改變指標所指的目標值。

引用在壽命期內不能再定義為其他變數的引用,指標卻可以指向其他變數。

不能引用乙個陣列,但有陣列的指標。

沒有引用的引用,卻有指標的指標。

11樓:匿名使用者

引用是別名的意思,指標儲存的是位址。

c++ 中指標和引用有什麼區別詳解

c++中指標和引用有什麼區別

12樓:匿名使用者

指標是乙個特殊的變數,他存放的是他所指變數的記憶體位址。

引用是目標的別名,可以認為和目標等價。

指標可以為null(空),而引用不能為空,引用必須初始化。

指標所指向的物件可以改變,但引用一旦初始化,就永久指向初始化的那個物件。

在編譯器中,引用的實現方式仍然是指標。

你可以把引用理解為const *p(常量指標)

c++中指標和引用的區別詳解

13樓:匿名使用者

1. 指標是乙個實體,而引用僅是個別名;

2. 引用使用時無需解引用(*),指標需要解引用;

3. 引用只能在定義時被初始化一次,之後不可變;指標可變;

引用「從一而終」 ^_^

4. 引用沒有 const,指標有 const,const 的指標不可變;

5. 引用不能為空,指標可以為空;

6. 「sizeof 引用」得到的是所指向的變數(物件)的大小,而「sizeof 指標」得到的是指標本身(所指向的變數或物件的位址)的大小;

typeid(t) == typeid(t&) 恒為真,sizeof(t) == sizeof(t&) 恒為真,但是當引用作為類成員名稱時,其佔用空間與指標相同4個位元組(沒找到標準的規定)。

7. 指標和引用的自增(++)運算意義不一樣;

c++ 中指標和引用有什麼區別

14樓:靜心先生

有的類不能取它的位址,但是引用都是可以的。

指標容易炫技,容易導致程式崩潰,但引用不會

請問C 中引用和指標的區別,C 中引用和指標的區別

c 引用與指標的比較 引用是c 中的概念,初學者容易把引用和指標混淆一起。一下程式中,n是m的乙個引用 reference m是被引用物 referent int m int n m n相當於m的別名 綽號 對n的任何操作就是對m的操作。所以n既不是m的拷貝,也不是指向m的指標,其實n就是m它自己。...

C類的物件和類的指標的區別,指標和引用的區別

c 物件是類的示例,當定義乙個類的時候,系統是不為這個類分配空間的,只有當定義類的物件的時候才會分配空間,類的物件實際上就是類空間的引用。指標是用來儲存變數的位址。區別 指標和引用的區別 指標指向一塊記憶體,它的內容是所指記憶體的位址 引用 是某塊記憶體的別名。指標版 是乙個實體,而引用僅是個別名權...

空指標和0有什麼區別C語言中空指標0與NULL相同嗎

這是與編譯器有關的.比如byte a 0xff 它的範圍就定死在0 255之間 word b 0xffff 範圍就16位數字,更大.這樣如果強制轉換 成byte,那麼這二個相等,反之強制轉成word當然是後者更大範圍.在我們人感覺來看 a與b同為0但機器編譯後實際上分配的空間是不同的.所以在c語言的...