Ergebnis 1 bis 4 von 4

Thema: [C] Zeiger Problem

  1. #1

    [C] Zeiger Problem

    Moin.

    Ich habe hier ein Zeiger Problem.
    Ich wollte eine Funktion schreiben, die mir den Zeiger von einem Array übergibt.

    Code (C):
     
    typedef GLfloat CGColor3[3];
     
    ...
     
    static CGColor3 g_colorTimeline = { 0.0f, 1.0f, 0.0f };
     
    ...
     
    CGColor3 *
    getTimelineColor (void) {
      return *g_colorTimeline;
    }
     


    Nur meldet der Kompiler:
    "incompatible types when returning type ‘GLfloat’ but ‘GLfloat (*)[3]’ was expected"

    Kann mir vielleicht einer sagen, wo genau das Problem liegt?

  2. #2
    'Eigentlich' steht da:
    Code (c):
    static GLfloat g_colorTimeline[3] = { 0.0f, 1.0f, 0.0f };
     

    g_colorTimeline ist bereits ein Pointer auf den Beginn der Array.
    return *g_colorTimeline; gibt daher GLfloat zurück. (normalerweise das erste Element)
    Daher sagt er, dass ein GLfloat auf diese Weise zurückgegeben wird.


    Aber in diesem Beispiel könnte folgendes nötig sein:
    Code (c):
    return &g_colorTimeline;

    Kann sein, dass du * und & verwechselt hast. * dereferenziert und & gibt den Pointer zurück.

    Geändert von Drakes (08.05.2010 um 23:07 Uhr)

  3. #3
    OK, das Problem hat sich nun erledigt.
    Komische, (für mich) nicht erklärbare Umstände haben das Problem verursacht.
    Ausserdem verwechsel ich bei C gerne * mit & ^^"

    Hab nun nochmal einige Funktionen neu geschrieben und nun läuft es auch ^^
    Danke an Drakes und Mog ^^

  4. #4
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Ausserdem verwechsel ich bei C gerne * mit & ^^"
    Oh, bin ich nicht der einzige, dem das ständig passiert. Ich schreib immer nur kleine Sachen in C, deswegen kann ich dann einfach lustig mit *, ** und & rumprobieren.

Berechtigungen

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