1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C Array / Pointer - Frage

  • Sandybutt
  • 13. März 2009 um 11:59
  • Unerledigt
  • Sandybutt
    8
    Sandybutt
    Mitglied
    Reaktionen
    4
    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?

    "I don't think that Debian can really compete with Gentoo. Sure it might be okay, but when it comes to dependencies, you probably are still going to have to get them all on your own. Or is there something like portage in the Debian world as well?"

  • daywalker
    4
    daywalker
    Mitglied
    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 :)

    11 Steffen Hofmann Fussballgott!

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

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    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.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

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

  • Sandybutt
    8
    Sandybutt
    Mitglied
    Reaktionen
    4
    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!

    "I don't think that Debian can really compete with Gentoo. Sure it might be okay, but when it comes to dependencies, you probably are still going to have to get them all on your own. Or is there something like portage in the Debian world as well?"

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung