c 中指標的作用是什麼呢?單純的用引用不可以嗎?

時間 2021-05-06 15:56:35

1樓:feverzsj

引用在c++中,只是實際物件的別名,本身甚至可以不具實體(在可能的情況下,編譯器可以完全優化掉引用,使用實際物件替換引用,其他情況下引用會使用指標實現),而指標是一種實體,它表示的是乙個位址。

2樓:florent

說點感受,c++可以在堆上分配記憶體,但是也可以在棧上分配記憶體。

棧上的記憶體是不需要我們管理的。引用就是用在這的。使用引用建立的物件,不需要手動析構。

大神勿噴,理解不到位請理性指出……

3樓:季前-萵葉

我覺得吧

指標是c的,而引用是c++的。

而c作為乙個面向過程的用於底層開發的語言,需要用到他呼叫暫存器位址之類,又直接又方便。

你問指標能直接做到,那c++為什麼還要加引用語法? 嘿嘿,有乙個簡單原因那就是:指標難用啊,一用就報錯,還越錯越愛用。就用點簡單一點的吧。

引用不是物件,他只是給存在的物件又起乙個名字。就像你女朋友在外面會叫你xx,私下又會叫你寶寶一樣,都是你這個b崽子。想想看,引用初始化跟一階指標的初始化像不像?

而引用不能定義引用,就像是用二階指標,那還用屁的引用。

二避免在值傳遞,也就是值拷貝大的型別物件或容器物件時浪費時間。調一次複製一次,用完又刪,來來回回這誰頂得住啊。又或者有些型別不支援拷貝,那咋辦啊,只能用引用。

三吧,就是可以再呼叫函式時能加多幾個「返回值」,乙個return有時候根本不夠用.

暫時想到這些吧。總得來說沒事用引用,有事也盡量不要用。那要是人體編譯器的大佬,那無所謂,指標逼格管夠。

4樓:梁兄

指標就是位址,有什麼作用,要看它是什麼指標,能做什麼,引用相當於跟乙個變數取了個別名,也可以理解為安全的指標指標 - 梁筆記

為什麼C++ 有指標也有引用 - 梁筆記

5樓:

一開始看到這題目,我就覺得這個問題是不是我讀反了?我仔細的讀了第二遍才確定沒讀錯。

C++的引用本質上就是指標的語法糖:引用能做到的,指標都能無損的做到——反之則不行。

對比引用和指標,其中對程式設計影響最大的功能缺失,莫過於引用不能修改指向

隨手列舉一些問題:

swap 機制被迫用到開銷極大的值拷貝;

資料結構只能在定義時確定,無法動態調整(除了陣列外,幾乎所有資料結構的增刪都依賴指標的動態調整);

delete 後置為 NULL 的低成本低開銷規避野指標操作無法實現(這意味著你沒有任何辦法去標識」野引用「——除非你不用 delete);

延遲載入/singleton等機制會相當難實現。

總之,C++的引用只是乙個方便編譯器進行激進優化的語法糖,類似於 const/restrict 之類的關鍵字一樣,有它更好,沒它照樣能跑。所以,它本身就沒考慮到它會去」替代「些什麼。因此,對比指標,單從功能的完備性來說,就不是能放在一起比的。

6樓:白楊

引用跟指標最大的區別在於引用是必須在初始化(定義)時賦值的,而且賦值後就無法再指向其它物件。雖然引用本質上就是乙個「自動解引用」的指標,但是這個限制導致指標仍然有用:引用能做的指標都能做,但指標能做的引用不一定可以。

當然,語言裡的特性並不是越靈活越好,靈活有時也代表著容易不小心用錯。所以能用引用解決的問題就盡量不要用指標。

7樓:風吟

c++底層的實現,不用指標是不行的。比如虛指標,虛基類指標,虛表之類的。 其實越到底層的實現指標的用處越大,但有時候為了考慮效率,安全性c++引入了引用

8樓:iamtp

指標和引用的本質都是指標,乙個是顯式的,乙個是隱式的,但有乙個重要的語法區別在於指標變數可以重新賦值,在執行過程中指向不同的位址,而引用必須初始化,且一旦初始化後不能再指向另乙個位址。

所以可以根據語法上的這點不同根據具體需求來選擇,如果不需要更換指向且有確定的初始化,用引用會更簡潔。

9樓:張強

指標可以傳來傳去,不用管他的型別,到用時再轉成對應型別的指標,而引用傳遞的時候,你要先轉成對應型別才能傳遞正確引數。比如很多鍊錶,可以對基類以及各種繼承類進行鍊錶插入操作,那要麼需要為每乙個繼承類寫乙個引用引數的插入介面,要麼只有乙個基類引數的插入介面,插入時將繼承類強制轉換為基類。如果強制轉換成基類引用,還不一定能使用虛函式、多型等屬性,所以指標不是萬能的,但沒有指標是萬萬不能的

10樓:jason

其實如果業務邏輯允許,盡量不用指標是最好的。

引用可以應付大部分情況,但是如果需要考慮效能及硬體限制。

指標可以解決大部分引用無法解決的問題。愚見。

c 中的 的作用是什麼呢?

鹹蛋 沒什麼複雜的東西 就是把型別本身再歸類 list 就是乙個int型別的list 這裡int作為實際型別引數編譯器有個型別推導的過程會在你使用實際型別引數的時推導出這個型別沒有的型別不會被推導出 sdhjkd list的定義過程,其中 的作用是傳引數嗎?是的,函式模板通過 裡的引數進行例項化。不...

血槽的作用是什麼

血槽的作用和拔刀快有關係嗎?我生物不好,理論不行。咱被刀捅傷過,絲毫沒覺得傷口會夾著刀,傷口會張開流血才是常識好吧?讓人拔刀更快?體內外壓強是不一樣,但血槽能起一絲作用?還是為了省材料和造型。 釩啞鈴 主要目的只有乙個 在盡量不影響刀身強度和剛度的情況下減輕重量.其他的都是副產品.控制重心的作用也有...

語言的作用是什麼

涼風風 主要是溝通和傳遞感情,但我認為語言是非常沒有效率的溝通,容易產生誤解,容易不信任,容易不知所云不在同乙個頻道上,外星人腦電波的溝通比較先進 許伽藍 不同語言學家對語言基本功能的劃分不完全相同,其中比較常見且被廣泛認可的包括以下幾種 1.認知功能。即語言是人類認知世界的工具,借助語言我們才能了...