Sind in C ++ Zeiger wie Zellverweise in einem Excel-Arbeitsblatt?

8

Ich bin ein durchschnittlicher Programmierer in C ++ und meide normalerweise Zeiger um jeden Preis. Aber ich habe vor kurzem begonnen, einige APIs zu verwenden, die gerade voll von ihnen sind. Und Ehrlichkeit, sie scheinen viel besser zu funktionieren, wenn ich einfach einen ähnlichen Pfad weiterführe, wie es der Autor der API beabsichtigt hat.

In Form und Funktion, aber offensichtlich nicht Syntax - Können "Zeiger" als "sogar etwas" angesehen werden, analog zu "Zellreferenzen" in Microsoft Excel?

Ich habe mehrere Jahre Erfahrung mit Microsoft Excel mit VB. Ich bin auch eine Art "Formula / Reference Junkie", wenn es darum geht, Excel zu verwenden, so macht dieser Gedankengang nur Sinn für mich. Ich möchte nur wissen, ob ich in die richtige Richtung "gerichtet" bin.

Danke!

    
tahwos 24.01.2012, 03:53
quelle

5 Antworten

9

Eine Zellenreferenz in Excel ist eine Zeichenfolge, die eine bestimmte Position in einer Arbeitsmappe (oder unter bestimmten Umständen eine andere Arbeitsmappe) angibt.

Ein Zeiger in C ++ ist eine Speicheradresse . Die Speicheradresse ist eine Zahl (nicht mehr!), Die einen bestimmten Punkt im virtuellen RAM findet.

Also, sie sind eigentlich ziemlich ähnlich. Ich war bereit, auf deiner Parade zu regnen, indem ich darüber sprach, wie unterschiedlich die beiden sind. Aber die Analogie funktioniert.

Wenn Sie einen Zeiger "dereferenzieren", gehen Sie zu dem Punkt im Speicher, den er anzeigt. In Excel werden die Zellbezüge nicht wirklich "dereferenziert". Aber nah genug.

Wenn Sie int y = 4; int* x = &y; sagen, ist das so, als ob Sie eine Zelle in B1 erstellen, die "4" enthält, und dann eine andere Zelle, die "= B1" enthält.

    
Borealid 24.01.2012, 03:58
quelle
1

Es gibt einige Analogien, die mir in den Sinn kommen, aber der Klassiker, als ich zum ersten Mal Computerprogrammierung lernte, waren Briefkästen in der Poststelle. Stellen Sie sich Briefkästen mit der Aufschrift Tom, Dick und Harry vor.

  • Legen Sie in Toms Briefkasten einen Umschlag, der besagt, dass in Dicks Briefkasten ein Hinweis steckt
  • Platz in Dicks Briefkasten einen Umschlag, in dem steht, dass der Schatz in Harrys Briefkasten ist
  • In Harrys Briefkasten legen Sie 100 Dollar ein! Yippee!

In der Computerprogrammierung sind Tom, Dick und Harry alle Speicheradressen. Die ersten beiden enthalten Zeiger, der dritte enthält einen numerischen Wert. Das Öffnen des Umschlags in den Postfächern von Tom oder Dick ist wie ein Dereferenzierungszeiger.

Wir schreiben das:

%Vor%

Also, ** tom == * dick == harry == 100. Während Tom ein Zeiger auf einen Zeiger zu Harry ist. Und Dick ist ein Zeiger auf Harry.

    
Stephen Quan 24.01.2012 04:09
quelle
0

Ich denke, das ist eine sinnvolle Analogie.

    
David Schwartz 24.01.2012 03:58
quelle
0

Ein Zeiger ist nichts anderes als eine -Adresse eines Speichers , die etwas (oder nichts) enthält.

Egal, ob die Zelle tatsächlich irgendwelche Daten enthält, ihre Adresse kann man sich a als Zeiger auf die Zelle vorstellen.

Beachten Sie, dass die Zelle selbst kein Zeiger ist.

    
JAM 24.01.2012 03:58
quelle
0

Nein, nicht wirklich. Zeiger können indiziert werden, und sie können auch ungültig sein, und ich glaube, dass keines dieser Dinge für Excel-Zellen zutrifft.

    
Puppy 24.01.2012 04:21
quelle

Tags und Links