為什麼 C 有指標了還要引用?

時間 2021-05-13 05:05:06

1樓:airtrack

這個在《C++語言的設計與演化》上面有詳細說明,原因就是為了支援操作符過載。對於很多C++語法為什麼這麼設計都可以在這本書上找到答案。

2樓:Berry Geek

因為引用是編譯器層的東西, 編譯完後並不會占用真正的記憶體. 而指標是個資料, 是要單獨占用記憶體儲存的.

更新一下:

說"引用編譯玩後不會佔記憶體",這種說法不太嚴謹. 應該說引用是個概念, 概念本身不佔記憶體. 而實現引用的通常方式為儲存其引用物件的指標,而此指標會佔記憶體,但不是引用佔的記憶體了.

就像類本身不佔記憶體, 但物件會佔記憶體一樣

3樓:Meowz

因為加入引用是為了支援operator overloading。這裡有乙個假設,如果沒有引用,那麼,用指標來operator overloading操作。

A operator +(const A *a, const A *_a);

那麼使用的時候,&a + &b,這樣看起來是不是很難受。

而引入引用的概念,既可以滿足overload operator,也不失過載value和pointer的靈活性。而且引用還帶來乙個指標無法替代的特性: 引用臨時物件。

因為引用必須在定義的時候就賦值,以後無法更改。

C語言有指標字串,為什麼沒有指標數字?

虛實道長 我個人覺得這個跟計算機的架構,以及數字或者字元的編碼有關。計算機如果暫存器是32位的,當然可以直接支援32位的數字 整數或者浮點數 但是字元,本質上也是 數字的形式 儲存,那麼顯然的問題就是 如何把abcd26個英文本元和常用字元用什麼數字儲存?單個字元可以轉化為32位數字,而字串不能夠。...

linux驅動空指標引用為什麼會導致核心panic

花滿樓 無論是32位還是64位,虛擬位址的布局中核心空間都是高位,使用者空間都是低位,所以0這個虛擬位址不是合法的核心虛擬位址 希望有幫助 沈凋墨 核心是所有程序共享的,如果核心發生段錯誤,其他程序不大可能還能夠繼續正常執行,此時不panic更待何時?這個詞選得很妙,所有程序人心惶惶,沒法工作。 m...

C 將返回值為引用有什麼作用?

可以返回函式中的靜態變數,它在程式結束後被自動釋放可以返回 this,以實現諸如a b c這樣的賦值運算返回右值引用以延長臨時變數的生命週期 返回程式中的全域性變數 黃色的香蕉 其實都一樣,只是場景賦予不同意義。返回指標,代表返回值可能為空,外部需要判斷異常。返回引用,代表該值一定是有效的,因為引用...