2012-01-24 11 views
8

Soy un programador promedio en C++, y generalmente evito los apuntadores a toda costa. Pero recientemente comencé a usar algunas API, que están llenas de ellas. Y honestidad, parecen funcionar mucho mejor, si continúo por un camino similar, como lo pretende/implica el autor de la API.En C++, ¿hay punteros como referencias de celda en una hoja de cálculo de Excel?

En forma y función, pero obviamente sin sintaxis: ¿Se puede considerar "Punteros" como "incluso algo" análogo a "Referencias de celdas" en Microsoft Excel?

Tengo varios años de experiencia con Microsoft Excel w/VB. También soy una especie de "drogadicto de referencia/de referencia", cuando se trata de usar Excel, así que esta línea de pensamiento tiene sentido para mí. Solo quiero saber si estoy "Apuntado" en la dirección correcta.

¡Gracias!

+2

Lamento decirlo, pero si está confundido con los punteros, no es un programador de * promedio * C++. ¡Pero sigan! C++ es un lenguaje maravilloso que te enseñará mucho sobre informática. – log0

+1

@Ugo - Es posible escribir código útil y eficiente en C++, sin usar un solo puntero. También es posible ocuparse de su propio negocio, si no tiene algo significativo que compartir. – tahwos

Respuesta

9

Una referencia de celda en Excel es una cadena que indica una ubicación determinada en un libro (o, en determinadas circunstancias, en otro libro).

Un puntero en C++ es una dirección de memoria . La dirección de memoria es un número (¡nada más!) Que localiza un lugar determinado en la RAM virtual.

Así que sí, en realidad son bastante similares. Estaba preparado para llover en tu desfile hablando de cuán diferentes son los dos. Pero la analogía funciona.

Cuando "desreferencia" un puntero, irá al punto en la memoria que indica. En Excel, realmente no "desreferencia" las referencias de celda. Pero lo suficientemente cerca.

Cuando dice int y = 4; int* x = &y;, es como crear una celda en B1 que contenga "4" y luego otra celda que contenga "= B1".

+0

La última oración en su respuesta, es lo que me hizo pensar de esta manera, en primer lugar, porque hago eso ("= B1") todo el tiempo. La segunda oración de su respuesta es una especie de "desambiguación" que provocó mi pregunta: una referencia de celda en Excel es un número "y una letra" (nada más) que ubica una determinada ubicación en una hoja de trabajo. << ahí está mi analogía. Me gusta tu respuesta, ¡Gracias! – tahwos

+0

Considere la referencia de celda como una referencia nombrada. En el código de Excel, lo más probable es que una función lo convierta en una referencia de celda real, una posible firma: 'Cell * locateRef (char const * ref)'. Esta referencia nombrada está en el dominio de la hoja de cálculo, mientras que la referencia del puntero está en el dominio de la memoria, pero ambos se refieren a la misma cosa. –

+0

@ edA-qa mort-ora-y, no quise decirlo tan literalmente, pero gracias por la entrada. – tahwos

0

Creo que es una analogía razonable.

0

Un puntero no es más que una dirección de una memoria que contiene algo (o nada).

Independientemente de si la celda realmente contiene algún dato, su dirección, puede considerarse como un puntero a la celda.

Tenga en cuenta que la celda en sí no es un puntero.

1

Hay varias analogías que me vienen a la mente, pero la clásica cuando aprendí por primera vez la programación de computadoras era buzones en la sala de correo. Imagine buzones etiquetados, Tom, Dick y Harry.

  • En el buzón de Tom, coloque un sobre que dice que hay una pista en el buzón de Dick
  • En el buzón de Dick, coloque un sobre que dice que el tesoro está en el buzón de correo de Harry
  • En el buzón de Harry ¡Pones $ 100 dólares! Yippee!

En la programación de computadoras, Tom, Dick y Harry son todas las direcciones de memoria. Los primeros dos contienen punteros, el tercero, contiene un valor numérico. Abrir el sobre en los buzones de Tom o Dick es como punteros de desreferenciación.

escribimos esto:

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

Así, tom ** == == * Dick Harry == 100. Mientras que Tom es un puntero a un puntero a Harry. Y dick es un puntero a harry.

0

No, en realidad no. Los punteros pueden indexarse ​​y también pueden no ser válidos, y creo que ninguna de esas cosas es verdadera para las celdas de Excel.

+0

Ambos son verdaderos en Excel. Puede indexar un rango de celdas, o incluso por el contenido de una sola celda. Las referencias de celdas no válidas se muestran como errores - #VALOR !, #DATA !, etc. – tahwos

Cuestiones relacionadas