Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zu Feldern und Pointern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.01.2012, 16:04 Uhr
~chris0054
Gast


Hallo!

Ich versuche als Übung, durch ein zweidimensionales Feld einmal mit Zeigerarithmetik und einmal ohne (d.h. "normal") durchzuiterieren. Dafür definiere ich weiters das Feld einmal mithilfe von Pointern und new und einmal "normal".

Allerdings verstehe ich hier etwas nicht:


C++:
    int Feld[5][2];
    int** foo = Feld; // Geht nicht, Fehlermeldung
    int (*bar)[2] = Feld; // Geht

    int Feld2[5];
    int* ble = Feld2; // Geht schon ?!?



Warum geht der Zeigerzugriff beim zweidimensionalen Array so nicht, aber beim eindimensionalen schon? Warum muss ich beim zweidimensionalen Array, wenn ich etwas wie oben machen will, einen Pointer wie in der dritten Zeile erstellen?

Jetzt allerdings gibt es noch die andere Version:


C++:
int** Feld = new int*[5];
for (int i = 0; i < 5; i++) { Feld[i] = new int[2]; }

for (int** ptr = Feld; ptr != Feld + 5; ptr++) { ... } // Geht ?!



Warum geht das jetzt schon? Ich dachte, zwischen dem mit Zeigern erstellten Feld und dem ohne Zeiger erstellten Feld, sondern mit Subskript-Operator erstelltem Feld ist kein Unterschied?

Danke im Voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: