2017-06-01 111 views
1

我正在學習C++。我是一個EE,在20年前就學會了它,但是在我職業生涯的進展中,我停止了編程,直到最近才停止編程。我應該補充說,我從來沒有參加任何課程編程。 我有一個關於指針的理論問題。在閱讀關於指針的書籍時,他們似乎在C++中扮演着重要的角色。我的問題是我看不到那是什麼。我看到指針在數組中有一個角色,但我看不到他們在其他任何角色中的角色。 我可以看到他們做了什麼,但我不明白爲什麼在我看到他們的情況下使用指針。引用或直接變量都可以正常工作。我有一種感覺,答案在於記憶(這是最佳使用),但我只是不知道。 任何答案將不勝感激。謝謝。爲什麼使用指針

+0

數組數組怎麼樣?和鏈表?和樹?和圖?和動態內存分配?同樣在運行時你需要記住什麼是調用者函數,這必須基於指針。 – reuns

+0

謝謝@ user1952009。其實這很有趣,但那正是我需要的。讓我問你一個問題;你用的是指針嗎?或者還有其他的東西,你總是使用指針。我希望那就是它。 –

+0

你需要了解的是,計算機使用指針來表示事物,就像'int a = 0; a = 1;'或'新字符串(「abcd」);'或'callThisFunction();'。當你在內存中修改/寫入一個值時,你正在寫一些指針給出的地址。指針在C/C++/Pascal/Fortran中是明確的。它們只是隱藏在其他語言中,但它們仍然存在, – reuns

回答

2

考慮從cplusplus.com以下:

「[T]這裏可以是其中一個程序的存儲器需求只能 運行期間確定的情況下例如,當所需要的內存取決於 的用戶。在這些情況下,程序需要動態分配內存,爲此,C++語言集成了運算符newdelete。「

如果您可以在運行時間之前確定所有內存需求,並且不需要使用任何抽象數據類型(如鏈接列表),那麼很難看到它們的使用。但是,如果要將值存儲在數組中,但是您還不知道該數組需要多大?

當您考慮從函數到函數傳遞值時,會出現指針的另一個值。您可能會發現有關C++中指針和引用之間差異的價值的this thread以及如何/爲什麼要使用它們。

我們一直有幾個關於CSEducators.SE site指針的教學對話。我會鼓勵你閱讀這些還有:

Simple Pointer Examples in C

Lesson Idea: Arrays, Pointers, and Syntactic Sugar

+0

您關於按引用傳遞的示例並不回答您爲什麼要使用指針傳遞引用而不是C++引用。 (我認爲一般情況下你不應該通過指針,如果你可以幫助它!) – user1118321

+0

好點 - 感謝你帶來了。我會適當地編輯。 – Peter

+0

彼得,謝謝。我認爲答案是在內存使用領域。我會毫不遲疑地檢查其他對話。 – 2017-06-01 06:56:08

1

指針來自Ç,其中有沒有參考概念,並C++繼承。可與參考C++進行

一切都與一個指針在Ç完成。

+0

我不確定這件事。那麼,鏈接結構與動態變化的鏈接呢? – templatetypedef

0

我覺得這個問題真的很棒,因爲它很純粹。

當編程語言寫入的程序只能調用函數並訪問程序可命名的數據時,它被認爲是「安全」的。

現在,指針的概念被髮明出來,打破了安全沙箱,併爲開發人員提供了在框外思考和行動的自由。

將指針看作窮人的工具,以實現編程語言本身不提供的東西。

如果使用指針編程某些算法,認爲可以實現更高的性能是誤導。優化是編譯器和硬件的特權,而不是人爲的。