Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Verständisfrage zu 2 Dimensionalen Arrays

  1. #1
    Registrierter Benutzer
    Registriert seit
    10.11.2003
    Beiträge
    15

    Verständisfrage zu 2 Dimensionalen Arrays

    HI!

    Ich bin grad dabei meine c kenntnis auf zufrischen.
    Jetzt habe ich in einem Buch Folge Frage gefunden:

    Sind die folgenden Anweisungen korrekt?

    char *feldA[5][5]: char feldB[5][5];

    feldA[0][0]=&feldB;
    feldA[1][1]=&feldB[3][3];
    *feldA[2][2]=feldB[2][2];
    *feldA[1][1]='b';
    feldB[4][4]=*feldA[1][1];

    So hier versteh ich nicht so ganz welche Anweisung korrekt ist und welche nicht.Vieleicht kann mir ja jemand erklären welche zulässig sind und welche nicht. Im Buch steht keine Lösung drin sonst würd ich hier nicht fragen.

    mfg janosch

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    char *feldA[5][5]: char feldB[5][5];

    Schon das geht irgendwie nicht. Was macht das : da?

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.11.2003
    Beiträge
    15
    HI!

    Habe mich vertipt das : soll ein ; sein.

    Sorry

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von janosch
    Sind die folgenden Anweisungen korrekt?

    char *feldA[5][5]: char feldB[5][5];

    feldA[0][0]=&feldB;
    Nicht ganz korrekt - funktioniert aber. Nicht korrekt deshalb weil feldB ein 5x5ArrayvonChars als Typ hat und du nun die Adresse von einem 5x5ArrayvonChars an einen Charpointer (den an Position [1][1] in feldA) zuweist. Die Typen sind nicht gleich - der Compiler warnt aber es funktioniert.

    feldA[1][1]=&feldB[3][3];
    Ok, du tust die Adresse vom Char an Position [3][3] in den Charpointer an Position [1][1]

    *feldA[2][2]=feldB[2][2];
    feldA[2][2] ist ein Charpointer - *feldA[2][2] der Char wos draufzeigt und dort tust du den Inhalt von feldB[2][2] rein - auch ok.

    *feldA[1][1]='b';
    Dito nur mit einem Constanten Char und nicht einem Feld von feldB

    feldB[4][4]=*feldA[1][1];
    Du tust an Position [4][4] den Inhalt von dem Char wo der Pointer an Position [1][1] in feldA hinzeigt hin. Auch ok.

    Gut möglich das etwas von dem was ich da oben gesagt habe nciht stimmt übrigens - ist immer etwas heikel so zeugs und manchmal spielen auch die Prioritätenregeln der Operatoren (* vor sonstwas oder so) die Rolle einer fiesen Falle

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •