在C ++中,是否像Excel工作表中的单元格引用一样?

时间:2012-01-24 03:53:48

标签: c++ pointers excel-formula

我是C ++的普通程序员,通常不惜一切代价避免使用指针。但我最近开始使用一些API,只是充满了它们。而且诚实,如果我继续沿着类似的道路前进,它们似乎工作得更好,就像API的作者所预期/暗示的那样。

在形式和功能上,但显然不是语法 - 可以将“指针”视为“甚至有点”,类似于Microsoft Excel中的“单元格引用”吗?

我有几年的Microsoft Excel w / VB经验。在谈到使用Excel时,我也是一个“公式/参考瘾君子”,所以这条思路对我来说是有道理的。我只是想知道我是否“朝向正确的方向”。

谢谢!

5 个答案:

答案 0 :(得分:9)

Excel中的单元格引用是一个字符串,它指示工作簿中的某个位置(或者,在某些情况下,指示另一个工作簿)。

C ++中的指针是内存地址。内存地址是一个数字(仅此而已!),用于定位虚拟RAM中的某个位置。

所以是的,它们实际上非常相似。我准备在你的游行中下雨,谈论这两者有多么不同。但这个比喻有效。

当你“取消引用”一个指针时,你会到达它指示的内存中的位置。在Excel中,您实际上并没有“取消引用”单元格引用。但足够接近。

当你说int y = 4; int* x = &y;时,有点像在B1处创建一个包含“4”的单元格,然后是另一个包含“= B1”的单元格。

答案 1 :(得分:1)

我想到了几个类比,但是,当我第一次学习计算机编程时,经典的类比就是邮件室里的邮箱。想象一下标有邮箱的汤姆,迪克和哈利。

  • 在汤姆的邮箱中,放一个信封,上面写着迪克邮箱里的线索
  • 在Dick的邮箱中,放置一个信封,上面写着宝贝在Harry的邮箱中
  • 在Harry的邮箱里,你花了100美元! yippee的!

在计算机编程中,Tom,Dick和Harry都是内存地址。前两个包含指针,第三个包含一个数值。在Tom或Dick的邮箱中打开信封就像取消引用指针一样。

我们写这个:

int harry = 100;
int *dick = &harry;
int **tom = &dick;

所以,** tom == * dick == harry == 100。 汤姆是指向哈利指针的指针。 迪克是哈利的指针。

答案 2 :(得分:0)

我认为这是一个合理的比喻。

答案 3 :(得分:0)

指针只是一个内存的地址,它包含某些东西(或什么都没有)。

无论单元格是否实际包含任何数据,它的地址都可以被视为指向单元格的指针。

请注意,单元格本身不是指针。

答案 4 :(得分:-1)

不,不是真的。指针可以被编入索引,它们也可能无效,我相信Excel单元格中的任何一个都不是。