Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Zeiger Problem



Whiz-zarD
08.05.2010, 20:46
Moin.

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



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?

Drakes
08.05.2010, 22:03
'Eigentlich' steht da:

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.

In diesem Fall würde ich folgendes verwenden:

return g_colorTimeline;


Aber in diesem Beispiel könnte folgendes nötig sein:

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

Whiz-zarD
08.05.2010, 22:44
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 ^^

dead_orc
08.05.2010, 23:04
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. :D