Newbie-Frage: Indirketionsoperator Unterschied Indexoperator?



  • Hallo erstmals,

    ich lerne gerade C++, bin somit also ein blutiger Anfänger!
    Nun lese ich über Zeiger in Verwendung mit Arrays und dabei stellt sich mir immer wieder die selbe Frage, die wäre: Gibt es eigentlich einen funktionellen Unterschied zwischen einen Indirektsionsoperator (*) und einen Indexoperator [] ?

    Gerade in Verwendung Zeiger mit Arrays ist das nicht immer durchschaubar!

    Wäre dankbar wenn mir dies jemand erklären könnte!

    Schöne aus Brunn bei Wien,
    verklausuliert!



  • a[b] ist definiert als *(a+b)

    (solange die Operatoren nicht überladen sind versteht sich)

    Hoffe, das beantwortet deine Frage.



  • Hi.

    Nein, grundsätzlich nicht. Das geht sogar soweit, dass A[B] das gleiche bedeutet, wie *(A + B) .

    Allerdings können beide Operatoren für Klassen überladen werden und somit eine andere (verschiedene) Bedeutung erlangen.



  • Danke für eure schnelle Antwort! War kurzzeitig schon am Verzweifeln!
    Jetzt ist mir Einiges klarer!



  • Sorry, muss nochmals zurück rudern!

    Trotz der logischen Erklärung ist bei mir doch noch etwas im Unklaren!

    Das Beispiel sieht wie folgt aus! (Es handelt sich nur um die Passage die ich mir nicht so recht erklären kann!)

    Erstellung eines mehrdimensionalen Array im Heap:

    int **Tab;
    int Zeile;
    
    Tab = new int* [Zeile]; //Diese Zeile ist es!
    

    Was ich bisher verstanden habe, ist Tab ein Zeiger der wiederum die Adresse eines anderen Zeigers erwartet!

    Aber was wird hier mit new erstellt?

    Wenn a[b] gleich ist *(a+b) -> Ist dann *a[b] gleich **(a+b) ?



  • ja



  • Erstellung ist nicht gleich zugriff.

    new erzeugt dir da ein Array von Zeigern auf int.

    Und der Zugriff ist eher so:

    *(*(a+x)+b)
    


  • Danke drakon,

    Zeiger sind bei C++ wirklich eine schwere Hürde. Leider behält bei dem Buch das ich derzeitig lese, so scheint es mir der Schreiber nicht immer ein Syntax-Schema bei und bei den vielen verschiedenen Möglichkeiten die C++ bietet, ist es dann oftmals schwer den Überblick nicht zu verlieren!
    Es sollen zwar die verschiedenen Möglichkeiten erklärt werden aber bei Beispielen hätte ich lieber ein einheitliches Bild vielleicht können andere damit besser umgehen, bei mir führt es eher zur Verwirrung!

    Deswegen: Kennst du vielleicht ein Buch für Einsteiger dass C++ sachlich, schlüssig und einheitlich erklärt! Derzeitig sitze ich vor C++ von A bis Z von Jürgen Wolf!



  • Von dem Buch habe ich viel schlechtes gehört. 😉 - Kenne es selbst nicht, aber die beiden hier werden sehr empfohlen:

    http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

    http://www.amazon.de/C-Primer-Stanley-B-Lippman/dp/382732274X

    Die beiden Thinking in C++ gibts sogar als free PDF..

    Achja:
    Die Zeiger Sache. Mach dir wegen dem keinen grossen Kopf. Zeiger werden in C++ eigentlich eher selten gebraucht. Oder zumindest die typische Zeiger Arithmetik, weil es oftmals gar nicht nötig ist. Die Standardbibliothek bietet dir alles, um das meiste zu umgehen. Du kannst dich ja später einmal genauer damit befassen, wenn du Lust hast, aber wirklich nötig ist es imo nicht.



  • Hatte auch schon wahrlich schlechtere Bücher als dieses aber manche Sätze wie ua. machen die Kritik verständlich;
    Denn da gibt es Passagen in denen weit ausgeholt wird und eher im Stile eines Romans herabgeduselt wird
    und dann wiederum solche wo der Eindruck entsteht das hier Wortgeiz praktiziert wird!

    zB.:
    " C-String-Tabellen sind den Zeigern auf Zeiger nicht unähnlich, aber - wie schon die Relation
    von >>Array und Zeiger<<- nicht dasselbe, sondern mehrdimensionale char-Arrays."

    WTF?
    Mir ist zwar klar was mit diesen Wortkonstrukt gemeint ist, doch dies erst nach dem 10mal lesen!

    Das mit dem geringen Vorkommen von Zeigern ist besser als gut! Ich möchte es aber dennoch verstehen lernen.
    Denn ich hab so die Erfahrung gemacht, dass wenn Grundwissen gänzlich fehlt oder falsch gedeutet wird.
    Die Probleme die dann in höheren Gebieten auftreten, unnötig vervielfacht werden!

    Thinking in C++ scheint interessant zu sein. Doch für meine Englischkenntnisse zu harter Tobak!

    Ich werde mir mal C++ Primer bestellen!

    Danke nochmals.



  • Für eine Übersicht kannst du dir auch den Artikel über Zeiger anschauen, der ist relativ ausführlich.


Anmelden zum Antworten