我正在學習C++。我是一個EE,在20年前就學會了它,但是在我職業生涯的進展中,我停止了編程,直到最近才停止編程。我應該補充說,我從來沒有參加任何課程編程。 我有一個關於指針的理論問題。在閱讀關於指針的書籍時,他們似乎在C++中扮演着重要的角色。我的問題是我看不到那是什麼。我看到指針在數組中有一個角色,但我看不到他們在其他任何角色中的角色。 我可以看到他們做了什麼,但我不明白爲什麼在我看到他們的情況下使用指針。引用或直接變量都可以正常工作。我有一種感覺,答案在於記憶(這是最佳使用),但我只是不知道。 任何答案將不勝感激。謝謝。爲什麼使用指針
爲什麼使用指針
回答
考慮從cplusplus.com以下:
「[T]這裏可以是其中一個程序的存儲器需求只能 運行期間確定的情況下例如,當所需要的內存取決於 的用戶。在這些情況下,程序需要動態分配內存,爲此,C++語言集成了運算符
new
和delete
。「
如果您可以在運行時間之前確定所有內存需求,並且不需要使用任何抽象數據類型(如鏈接列表),那麼很難看到它們的使用。但是,如果要將值存儲在數組中,但是您還不知道該數組需要多大?
當您考慮從函數到函數傳遞值時,會出現指針的另一個值。您可能會發現有關C++中指針和引用之間差異的價值的this thread以及如何/爲什麼要使用它們。
我們一直有幾個關於CSEducators.SE site指針的教學對話。我會鼓勵你閱讀這些還有:
您關於按引用傳遞的示例並不回答您爲什麼要使用指針傳遞引用而不是C++引用。 (我認爲一般情況下你不應該通過指針,如果你可以幫助它!) – user1118321
好點 - 感謝你帶來了。我會適當地編輯。 – Peter
彼得,謝謝。我認爲答案是在內存使用領域。我會毫不遲疑地檢查其他對話。 – 2017-06-01 06:56:08
我覺得這個問題真的很棒,因爲它很純粹。
當編程語言寫入的程序只能調用函數並訪問程序可命名的數據時,它被認爲是「安全」的。
現在,指針的概念被髮明出來,打破了安全沙箱,併爲開發人員提供了在框外思考和行動的自由。
將指針看作窮人的工具,以實現編程語言本身不提供的東西。
如果使用指針編程某些算法,認爲可以實現更高的性能是誤導。優化是編譯器和硬件的特權,而不是人爲的。
- 1. 爲什麼cudaMalloc()使用指針指針?
- 2. 爲什麼和什麼時候值得使用指針指針?
- 3. 爲什麼指向指針?
- 4. 爲什麼不使用指針變量
- 5. 爲什麼Java不是使用指針
- 6. 爲什麼在C中使用指針?
- 7. 爲什麼不能使用NULL指針?
- 8. 爲什麼strcpy不使用dest指針的const指針?
- 9. 爲什麼在這個編程中使用指針指針?
- 10. 爲什麼這個C代碼示例使用指針指針?
- 11. 爲什麼我們使用指針指針
- 12. 使用指針指向什麼點?
- 13. 爲鏈表添加元素時爲什麼不使用指針指針?
- 14. 爲什麼指針用於std :: string.find?
- 15. 爲什麼id是通用指針?
- 16. 什麼是指向指針的指針?
- 17. 爲什麼Linux使用這個「指向指針」的列表?
- 18. 無法解釋爲什麼指針成爲創建的指針
- 19. 爲什麼有人需要一個指向指針的指針?
- 20. 爲什麼指向char的指針指針是最新的?
- 21. 爲什麼使用參數時使用了一個指針?
- 22. 使用指針的目的是什麼?
- 23. 什麼是函數指針的使用?
- 24. Golang:什麼時候使用指針
- 25. 爲什麼不在反轉字符串時使用指針指針?
- 26. 爲什麼我的C++向量在不遵守指針時使用空指針。
- 27. C - 爲什麼指針指針與指向數組的指針不同?
- 28. 爲什麼不能使用指向char指針的指針而不是char指針數組?
- 29. 爲什麼在C++ 11中使用static_cast作爲自動指針?
- 30. 爲什麼CUBLAS使用const指針作爲參數?
數組數組怎麼樣?和鏈表?和樹?和圖?和動態內存分配?同樣在運行時你需要記住什麼是調用者函數,這必須基於指針。 – reuns
謝謝@ user1952009。其實這很有趣,但那正是我需要的。讓我問你一個問題;你用的是指針嗎?或者還有其他的東西,你總是使用指針。我希望那就是它。 –
你需要了解的是,計算機使用指針來表示事物,就像'int a = 0; a = 1;'或'新字符串(「abcd」);'或'callThisFunction();'。當你在內存中修改/寫入一個值時,你正在寫一些指針給出的地址。指針在C/C++/Pascal/Fortran中是明確的。它們只是隱藏在其他語言中,但它們仍然存在, – reuns