Zeiger auf Struct-Array
-
Hallo,
ich habe ein Problem mit einem Zeiger auf Struct-Array. Habe in meinen Buch (C von A bis Z / Jürgen Wolf nichts passendes gefunden).
Das Struct, was ich angelegt hab, soll die Werte wie folgt zur Verfügung stellen
leds[0-n] {red = 255; green = 230; blue = 100};/* main.c */ #include "sub.c" int main(void) { const int NUM_LEDS = 8; struct RGB { int red; int green; int blue; }; RGB leds[NUM_LEDS]; while (1) { test(leds, NUM_LEDS); } } /* sub.c */ void test(int *ptr_Struct, int numFields) { for (int i = 0; i < numFields; i++) { ptr_Struct[0] = 1; // wird falsch sein // Möchte gerne hier wie folgt die Daten festlegen können // ptr_Struct[0].red = Wert; // ptr_Struct[0].green = Wert; // ptr_Struct[0].blue = Wert; } }
-
sschultewolter schrieb:
ich habe ein Problem mit einem Zeiger auf Struct-Array. Habe in meinen Buch (C von A bis Z / Jürgen Wolf nichts passendes gefunden).
http://www.c-plusplus.net/forum/272350-full
Kommentare siehe unten.
/* main.c */ #include "sub.c" // man inkludiert keine .c files, nur Header int main(void) { const int NUM_LEDS = 8; struct RGB { int red; int green; int blue; }; // warum in der main? du brauchst den Typ außerhalb RGB leds[NUM_LEDS]; // Typ RGB ist nicht bekannt[1] while (1) // ich nehme mal an, das ist provisorisch { test(leds, NUM_LEDS); } } /* sub.c */ void test(int *ptr_Struct, int numFields) // warum Zeiger auf int? // Du brauchst Zeiger auf struct RGB { for (int i = 0; i < numFields; i++) { ptr_Struct[0] = 1; // wird falsch sein // Möchte gerne hier wie folgt die Daten festlegen können // ptr_Struct[0].red = Wert; // ptr_Struct[0].green = Wert; // ptr_Struct[0].blue = Wert; } }
Fußnote [1]: Das klappt, falls du einen C++-Compiler benutzt. C und C++ sind leicht inkompatibel, also solltest du versuchen, deinen Compiler in den C-Modus zu versetzen.
-
Zeile 13 muss geändert werden:
struct RGB leds[NUM_LEDS;
oder du kannst folgendes machen:
typedef struct RGB { int red; int green; int blue; } RGB;