Results 1 to 4 of 4
  1. #1
    Sandybutt's Avatar
    Title
    Hero
    Join Date
    Oct 2004
    Location
    Wahrscheinlichkeitsraum
    Posts
    241
    Thanks Thanks Given 
    7
    Thanks Thanks Received 
    8
    Thanked in
    6 Posts

    C Array / Pointer - Frage

    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?"

  2. #2

    Title
    Elite
    Join Date
    Nov 2004
    Location
    Wien/23
    Posts
    474
    Thanks Thanks Given 
    1
    Thanks Thanks Received 
    4
    Thanked in
    4 Posts
    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
    Last edited by daywalker; 13-03-2009 at 12:23.
    11 Steffen Hofmann Fussballgott!

  3. #3
    Kampi's Avatar
    Title
    Super Moderator
    Join Date
    Feb 2002
    Location
    Elysium
    Posts
    2,162
    Thanks Thanks Given 
    251
    Thanks Thanks Received 
    620
    Thanked in
    349 Posts
    float (*Q)[4][3];
    ein pointer auf ein 4x3 array bestehend aus 4x3 floats.

    float *Q[4][3];
    ein array bestehend aus 4x3 pointern vom typ float.
    Last edited by Kampi; 13-03-2009 at 12:23.
    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  4. #4
    Sandybutt's Avatar
    Title
    Hero
    Join Date
    Oct 2004
    Location
    Wahrscheinlichkeitsraum
    Posts
    241
    Thanks Thanks Given 
    7
    Thanks Thanks Received 
    8
    Thanked in
    6 Posts
    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?"

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •