c++ - 直观地解释指针及其意义?

标签 c++ c pointers function-pointers indirection

我很难理解指针,尤其是函数指针,我希望有人能告诉我它们到底是什么以及它们应该如何在程序中使用。特别感谢 C++ 中的代码块。

谢谢。

最佳答案

indirection的概念理解这一点很重要。

这里我们通过 increment(x) 传递值(注意创建和操作的是本地拷贝,而不是原始版本):

pass by value

在这里,通过increment(&x)指针(内存地址):

pass by pointer

请注意,引用与指针的工作方式类似,除了语法类似于值拷贝 (obj.member) 并且指针可以指向 0(“空”指针) 而引用必须指向非零内存地址。

另一方面,函数指针让您可以像传递变量一样方便地传递和处理函数,从而在运行时动态更改代码的行为。 Functors通常是首选(尤其是 STL ),因为它们的语法更清晰,并且它们允许您将本地状态与函数实例相关联(阅读有关 callbacksclosures 的内容,它们都是有用的计算机科学概念)。对于简单的函数指针/回调,lambdas由于其紧凑和就地语法,经常使用(C++11 中的新功能)。

关于c++ - 直观地解释指针及其意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895766/

相关文章:

c++ - 采用 Enum 参数的工厂函数

C++ glibc 检测到损坏的双链表错误 C++

C指针运算

c - 在 64 位系统上使用 printf %016x 与 %p 打印地址

c - 在 C 语言中,调用者是否曾经特别对待可变参数?

c++ - C++ 中的矩阵索引表示法

c++ - sqlbindparameter 未用于所有参数 - mysql 和 C++

c++ - 获取基类的指针以使用派生类的函数

c - 将数据写入特定内存地址问题

c++ - 使用未初始化的指针作为函数参数