为什么对于许多C或C ++的新的甚至是老的大学水平的学生来说,指针是导致混乱的主要因素?是否有任何工具或思维过程可以帮助您了解指针在变量,函数以及更高级别上的工作方式?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
指针是一个概念,对于许多人而言,一开始可能会造成混淆,尤其是在围绕周围复制指针值并仍然引用同一内存块的时候。
我发现最好的类比是将指针视为一张纸,上面有一个房屋地址,并且它所引用的内存块就是实际的房屋。因此可以容易地解释各种操作。
我在下面添加了一些Delphi代码,并在适当的地方添加了一些注释。我之所以选择Delphi,是因为我的另一种主要编程语言C#不会以相同的方式展现诸如内存泄漏之类的东西。
如果仅希望学习指针的高级概念,则应忽略下面说明中标有“内存布局”的部分。它们旨在举例说明操作后的存储器外观,但是它们本质上是更底层的。但是,为了准确地解释缓冲区溢出是如何工作的,重要的是添加了这些图。