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語言的...