Erklärungshilfe cout von array



  • hi,

    kann mir vielleicht hier vielleicht jemand eben erklären wie bei folgendem code:

    int main()
    {
      unsigned voorraad[3][4] = 
      {
      { 12,  6,  3,  2 },
      {  9, 13,  7,  0 },
      {  7,  4,  8,  5 }
      };
    
      cout << voorraad << endl;
      cout << *voorraad << endl;
      cout << voorraad+1 << endl;
      cout << (*voorraad)+1 << endl;
      cout << *(*(voorraad+1)) << endl; 
      cout << *(*(voorraad)+1) << endl; 
    
      return 0;
    }
    

    diese ausgabe ensteht:

    0x0012FF50
    0x0012FF50
    0x0012FF60
    0x0012FF54
    9
    6
    

    Is son kram den ich für die uni durchgehen, wissen und erklären können muss,... bitte nicht wegen der schreibweise wundern ich hab mich nich verschrieben... is holländisch...
    danke für die hilfe.



  • Na, überleg dir mal, was da ausgegeben wird. Also von welchem Typ ist das, was ausgegeben wird? Ist es vom Typ int? Ist es ein Zeiger (oder etwas, was in einen Zeiger konvertiert werden kann)?



  • also versteh ich das dann richtig, wenn ich sage:
    1. und 3. sind zum zeiger konvertierte objekte
    2. und 4. sind zeiger
    und 5. und 6 sind int werte...

    wenn ja könnte mir jemand vielleicht eben erklären wie die werte bei 5. und 6. zustande kommen.



  • 1-4 sind Zeiger.

    Man kann ja Zeiger bekanntlich inkrementieren. Und wenn du jetzt so ein 2 Dimensionales Array hast, dann ist ja der erste Index sozusagen die Zeile und der zweite die Spalte. Jetzt kannst du durch inkrementieren der Zeiger die Zeilen und Spalten wechseln.

    Stell dir das einfach als eine Matrix vor und der Zeiger vor dem ersten mal dereferenzieren ist die Laufvariable für die Zeile und der Zeiger nach dem ersten mal dereferenzieren ist die Laufvariable für die Spalte. Mit einem zweiten mal dereferenzieren greifst du dann auf den Wert in der Matrix zu.


Anmelden zum Antworten