1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C Array / Pointer - Frage

  • Sandybutt
  • 13. März 2009 um 11:59
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Sandybutt
    Punkte
    554
    Beiträge
    99
    • 13. März 2009 um 11:59
    • #1

    Kann mir vielleicht jemand erklären, was in C der Unterschied zwischen

    Code
    float (*Q)[4][3]

    und

    Code
    float *Q[4][3]

    ist?

  • daywalker
    Punkte
    140
    Beiträge
    27
    • 13. März 2009 um 12:13
    • #2

    Das Erste ist ein Zeiger auf ein zweidimensionales Array von Float Werten.
    Das Zweite ist ein zweidimensionales Array von Zeigern auf Float Werte.

    EDIT: Kampi hat natürlich recht :)

    Einmal editiert, zuletzt von daywalker (13. März 2009 um 12:23)

  • Kampi
    Punkte
    7.828
    Beiträge
    1.468
    • 13. März 2009 um 12:19
    • #3

    [INDENT]

    Zitat


    float (*Q)[4][3];

    [/INDENT]ein pointer auf ein 4x3 array bestehend aus 4x3 floats.

    [INDENT]

    Zitat

    float *Q[4][3];

    [/INDENT]ein array bestehend aus 4x3 pointern vom typ float.

    Einmal editiert, zuletzt von Kampi (13. März 2009 um 12:23)

  • Sandybutt
    Punkte
    554
    Beiträge
    99
    • 13. März 2009 um 12:29
    • #4

    Warum ist dann folgender Code gültig:

    Code
    main() {
        float a[4][3];
        float (*b)[3];
        b = a;
    }

    und dieser nicht:

    Code
    main() {
        float a[4][3];
        float *b[3];
        b = a;
    }

    Ich hätte mir eigentlich genau das Gegenteil erwartet?

    Edit: Ah, jetzt wirds mir langsam klar. Man kann ja float a[4][3] quasi als 4 Pointer auf ein float[3] - Array betrachten. Der zweite Fall schlägt demnach fehl, weil die Zuweisung von einem Pointer auf ein float[3] - Array nicht vereinbar ist mit einem float[4][3] - Array. Check! Dankeschön!

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum