0
A
回答
3
您已經在使用指針了。 Java中的每個非原始變量(也可能是C#,雖然我不太熟悉它)是指向對象的指針。
也許你想問關於pointer arithmetic的問題?
2
因爲指針可讓您實際手動訪問RAM(在Java中或「安全」C#中不可能),並且它們讓您可以控制事物的分配方式。
C#和Java中「hold」對象的變量實際上是指向內存中對象的指針(也簡稱爲引用),因此爲什麼類稱爲「引用類型」。相比之下,結構是「值類型」,所以結構變量實際上保存着數據本身。指針讓你動態地分配和訪問內存,並且不需要對編譯器部分進行任何安全檢查 - 它們會給你提供一些潛在的性能提升,但是它們讓你檢查你的代碼並確保它的正確性。
其原因有點微妙:您需要指針,因爲要使用內存,您需要知道編譯時需要的內存大小。但是,當然你永遠無法確定用戶不會試圖將100 MB的文件加載到僅用於處理20 MB的程序中,而另一方面卻無法保留這麼多自一開始(想想如果每個人都保留所有資源會發生什麼)。所以你要求操作系統爲你分配一塊內存並給你它的第一個字節的地址,這就是爲什麼需要指針的原因。 (還有指針的其他用途,如內存映射文件和設備,但會使文章更長。)
性能關鍵型應用程序以及充滿bug的應用程序都經常使用指針。 :)
1
我認爲通過理解指針可以更好地理解計算機內真正發生了什麼,發生了什麼以及程序如何實際工作。
如果你不關心它,只想讓你的java程序工作,你可以跳過它們;否則我認爲他們會幫助你完成有關編程的任何事情。
相關問題
- 1. 什麼是指向指針的指針?
- 2. 指針指針是什麼意思?
- 3. 什麼是強指針和弱指針
- 4. 爲什麼使用指針
- 5. 爲什麼和什麼時候值得使用指針指針?
- 6. 指針指針的作用是什麼? char **
- 7. 在C和C++中,const指針指針指的是什麼?
- 8. 爲什麼strcpy不使用dest指針的const指針?
- 9. 什麼是裸指針?
- 10. 什麼是指針聲明?
- 11. 什麼是合成指針?
- 12. 使用指針指向什麼點?
- 13. 在函數中使用指針指針的正確方法是什麼?
- 14. 什麼是不同類別的指針?
- 15. 什麼是「userdata指針」的好定義?
- 16. 爲什麼我的指針不是NULL?
- 17. 什麼是C++中的桶指針?
- 18. 什麼是C++中的void指針?
- 19. 幀指針的優點是什麼?
- 20. vbscript中的函數指針是什麼?
- 21. 什麼是C++中的豐富指針
- 22. 什麼是復引用指針
- 23. 在ObjectiveC中使用指針的最大優勢是什麼
- 24. 爲什麼使用本地指針是行不通的
- 25. 使用指針的指針
- 26. 無指針的C++動態內存分配 - 指針的指向是什麼?
- 27. 指向內存分配指針的指針,爲什麼這是錯誤的?
- 28. 爲什麼在這個編程中使用指針指針?
- 29. 爲什麼這個C代碼示例使用指針指針?
- 30. 爲什麼不能使用NULL指針?
請參閱:http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers-and-what-can-be-done-to-overcome/5754#5754 – 2011-01-29 00:47:29
指針不會幫助Java程序員做任何事情...... – 2011-01-29 00:48:31