Hi, ich habe hier eine simple, dumme C-Frage, die sich mit etwas Nachdenken eigentlich lösen lassen sollte, aber ich komme gerade nicht drauf :( Ich habe ein Array von Structs: struct test{ char* name; // Bezeichnung des Tests int id; // ID des Tests int res; // Testergebnis }; struct test tests[NO_TESTS]; Jetzt soll das Array an ein Unterprogramm übergeben werden. printTestScreen(tests); Wobei die Signatur wie folgt aussieht: void printTestScreen(struct tests test[]); D.h. doch ich übergebe einen Zeiger auf das erste Feld eines Arrays von Structs. Mit test[i].id sollte ich dann in der Funktion doch auf die Structs zugreifen können, aber irgendwie will das gar nicht kompilieren. Was ist daran falsch? Grüße Jakob
> Was ist daran falsch?
Du zeigst weder den exakten Code noch die exakte Fehlermeldung.
Im Prinzip hast du recht: Genau so wirds gemacht.
struct test { .... void printTestScreen(struct tests test[]); Ich werte das mal als Schreibfehler beim posten im Forum: Deine Struktur heist 'test', nicht 'tests'.
Das ist C++ und kein C. void printTestScreen(struct tests *test); /* C */
>Ich werte das mal als Schreibfehler beim posten im Forum: >Deine Struktur heist 'test', nicht 'tests'. Danke, das war der Fehler! Viele Grüße
Hallo, ein kleiner Tip am Rande : Mit typedef sieht das schöner aus (meiner Meinung nach). typedef struct { char *pcBla; int iBlubb; } test; und dann : #define ANZAHL 12 test variable[ANZAHL]; und weiterhin void vPrintToScreen(test* pxVar); Nur so meiner Meinung nach. Meinungen sind verschieden (was auch meine Notation angeht, die hier nicht zur Diskussion steht ;-)). MfG, Daniel.
> Das ist C++ und kein C. Wie kommst du auf das schmale Brett? > void printTestScreen(struct tests *test); /* C */ Das geht auch und ist zu ca. 100% äquivalent, sowohl in C als auch in C++.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.