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

Bob*_*ohn 4 c c++ pointers function-pointers indirection

我很难理解指针,特别是函数指针,我希望有人可以给我一个关于它们究竟是什么以及它们应该如何在程序中使用的概述.C++中的代码块将特别受到重视.

谢谢.

Pre*_*eti 9

间接的概念很重要.

这里我们通过值传递(请注意,本地副本是通过以下方式创建和操作的,而不是原始版本)increment(x):

按值传递

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

通过指针传递

请注意,引用与指针的工作方式类似,不同之处在于语法类似于值copies(obj.member),并且指针可以指向0("null"指针),而引用必须指向非零内存地址.

另一方面,函数指针允许您通过方便地传递和处理函数来动态地更改代码在运行时的行为,就像传递变量一样.函数通常是首选(特别是由STL),因为它们的语法更清晰,它们允许您将本地状态与函数实例相关联(阅读有关回调闭包的内容,两者都是有用的计算机科学概念).对于简单的函数指针/回调,由于它们的紧凑和就地语法,经常使用lambda(在C++ 11中是新的).