我正在学习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