4

我发现我通过现实世界的比较隐喻学得最好。例如,在 java 中,帮助我很好地理解 Accessors 和 Mutators 概念的一种方法是通过中间人的概念来思考它(私有变量不喜欢直接与他们的客户打交道,他们更喜欢中间人(访问器和突变器)处理它们)

C 中指针的概念对我来说仍然有点棘手。用什么比喻来描述它们是如何工作的?

4

5 回答 5

11

我一直喜欢指针就像你的手指的类比。如果我带你去停车场并让你给我找一辆红色汽车,你伸出一根手指(你的选择;))并指向一辆红色汽车。

你的手指不是答案。你的手指什么也没告诉我,但如果我看看你手指指向的地方,我就能找到我要找的东西。

现在我可以让你找到一辆蓝色的汽车,你可以将你的手指重新分配(重新分配)到一辆新车上。现在您的指针(与以前相同)正在向我显示相同类型的新数据。指针没有改变,只是它指向的东西。

这也适用于多个指针。我可以问一下指向蓝色汽车的指针在哪里,您可以用另一只手用手指指向第一根手指。现在,如果我想知道蓝色汽车在哪里,我可以按照第一根手指的方向找到第二根手指,再到汽车(数据)。

于 2013-04-04T18:20:27.420 回答
1

你可以想象一下,就像现实世界的地址一样,它们只是告诉你在内存中的哪里可以找到东西,增加一个指针(我在这里指的是指针算术)就像搬到隔壁的房子一样,看看这个答案另一个问题。

于 2013-04-04T18:17:53.883 回答
0

你可以把它们想象成电话号码,它告诉你如何联系某人。

拨打电话号码就像取消引用指针。

电话可能会断开连接。也许已经很久了,现在别人有了电话号码。这就像一个悬空指针。

于 2013-04-04T18:13:23.797 回答
0

假设一个电子表格的场景,您的数据分散在各处,但是当您可以使用行号和列号调用特定数据时,您会得到正确的数据。

行和列是指针。

现在您可以将这些行号和列号存储到另一个电子表格中,供您参考。而且这个电子表格现在也有行号和列号来确定数据,这是对原始电子表格的实际数据的引用。

于 2013-04-04T18:20:13.310 回答
-3

不需要比喻。指针是保存内存地址的变量。时期。

于 2013-04-04T18:17:25.923 回答