Forum: Compiler & IDEs C: Struct, Pointer und Arrays


von Jakob Keres (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

> Was ist daran falsch?

Du zeigst weder den exakten Code noch die exakte Fehlermeldung.

Im Prinzip hast du recht: Genau so wirds gemacht.

von Karl H. (kbuchegg)


Lesenswert?

struct test {
  ....

void printTestScreen(struct tests test[]);

Ich werte das mal als Schreibfehler beim posten im Forum:
Deine Struktur heist 'test', nicht 'tests'.

von Werner B. (Gast)


Lesenswert?

Das ist C++ und kein C.

void printTestScreen(struct tests *test);  /* C */

von Jakob Keres (Gast)


Lesenswert?

>Ich werte das mal als Schreibfehler beim posten im Forum:
>Deine Struktur heist 'test', nicht 'tests'.

Danke, das war der Fehler!

Viele Grüße

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Was soll daran C++ sein?

von Daniel aka Khani (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

> 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
Noch kein Account? Hier anmelden.