我发现我通过现实世界的比较隐喻学得最好。例如,在 java 中,帮助我很好地理解 Accessors 和 Mutators 概念的一种方法是通过中间人的概念来思考它(私有变量不喜欢直接与他们的客户打交道,他们更喜欢中间人(访问器和突变器)处理它们)
C 中指针的概念对我来说仍然有点棘手。用什么比喻来描述它们是如何工作的?
我一直喜欢指针就像你的手指的类比。如果我带你去停车场并让你给我找一辆红色汽车,你伸出一根手指(你的选择;))并指向一辆红色汽车。
你的手指不是答案。你的手指什么也没告诉我,但如果我看看你手指指向的地方,我就能找到我要找的东西。
现在我可以让你找到一辆蓝色的汽车,你可以将你的手指重新分配(重新分配)到一辆新车上。现在您的指针(与以前相同)正在向我显示相同类型的新数据。指针没有改变,只是它指向的东西。
这也适用于多个指针。我可以问一下指向蓝色汽车的指针在哪里,您可以用另一只手用手指指向第一根手指。现在,如果我想知道蓝色汽车在哪里,我可以按照第一根手指的方向找到第二根手指,再到汽车(数据)。
你可以把它们想象成电话号码,它告诉你如何联系某人。
拨打电话号码就像取消引用指针。
电话可能会断开连接。也许已经很久了,现在别人有了电话号码。这就像一个悬空指针。
假设一个电子表格的场景,您的数据分散在各处,但是当您可以使用行号和列号调用特定数据时,您会得到正确的数据。
行和列是指针。
现在您可以将这些行号和列号存储到另一个电子表格中,供您参考。而且这个电子表格现在也有行号和列号来确定数据,这是对原始电子表格的实际数据的引用。
不需要比喻。指针是保存内存地址的变量。时期。