В С ++ указатели похожи на ссылки на ячейки в рабочей таблице Excel? - PullRequest
8 голосов
/ 24 января 2012

Я обычный программист на C ++ и обычно избегаю указателей любой ценой. Но недавно я начал использовать некоторые API, которые просто полны. И, честно говоря, они, кажется, работают намного лучше, если я просто продолжу идти по тому же пути, который предполагал / подразумевал автор API.

По форме и функциям, но, очевидно, не по синтаксису - можно ли рассматривать «указатели» как «даже несколько», аналогично «ссылкам на ячейки» в Microsoft Excel?

У меня есть несколько лет опыта работы с Microsoft Excel с VB. Я также своего рода «Формула / Справочник Наркомана», когда речь заходит об использовании Excel, поэтому этот ход мыслей просто имеет смысл для меня. Я просто хочу знать, правильно ли я "указал" в правильном направлении.

Спасибо!

Ответы [ 5 ]

9 голосов
/ 24 января 2012

Ссылка на ячейку в Excel - это строка, которая указывает определенное место в книге (или, при определенных обстоятельствах, другую книгу).

Указатель в C ++ - это адрес памяти . Адрес памяти - это число (не более того!), Которое определяет определенное место в виртуальной памяти.

Так что да, они на самом деле довольно похожи. Я был готов пойти на ваш парад, рассказав о том, насколько они разные. Но аналогия работает.

Когда вы «разыменовываете» указатель, вы переходите к той точке памяти, которую он указывает. В Excel вы не разыменовываете ссылки на ячейки. Но достаточно близко.

Когда вы говорите int y = 4; int* x = &y;, это похоже на создание ячейки в B1, содержащей «4», а затем другой ячейки, содержащей «= B1».

1 голос
/ 24 января 2012

Есть несколько аналогий, которые приходят на ум, но классической, когда я впервые узнал о компьютерном программировании, были почтовые ящики в почтовом отделении. Представьте себе почтовые ящики с надписью Том, Дик и Гарри.

  • В почтовом ящике Тома положите конверт с надписью, что в почтовом ящике Дика есть подсказка
  • В почтовом ящике Дика поместите конверт, в котором написано, что сокровище находится в почтовом ящике Гарри
  • В почтовый ящик Гарри вы положили 100 долларов! Yippee!

В компьютерном программировании Том, Дик и Гарри - все адреса памяти. Первые два содержат указатели, третий содержит числовое значение. Открытие конверта в почтовых ящиках Тома или Дика похоже на разыменование указателей.

Мы пишем это:

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

Итак, ** Том == * Дик == Гарри == 100. В то время как Том - это указатель на Гарри. И Дик - указатель на Гарри.

0 голосов
/ 24 января 2012

Нет, не совсем. Указатели можно индексировать, а также они могут быть недействительными, и я считаю, что ни одна из этих вещей не относится к ячейкам Excel.

0 голосов
/ 24 января 2012

Указатель - это не что иное, как адрес памяти , которая содержит что-то (или ничего).

Независимо от того, содержит ли ячейка какие-либо данные, ее адрес можно рассматривать как указатель на ячейку.

Обратите внимание, что сама ячейка не является указателем.

0 голосов
/ 24 января 2012

Я думаю, что это разумная аналогия.

...