struct array übergeben
-
das hatt ich glaube ich auch schon versucht:
#include <stdio.h> typedef struct Figur { int figur; int farbe; } sFig; void setze(sFig **hallo); int main(){ sFig hi[3][3]; setze(hi); printf("%d\%d",hi[1][1].figur,hi[1][1].farbe); getchar(); return 0; } void setze(sFig **hallo){ *hallo[1][1].figur=1; *hallo[0][1].farbe=1; }
kommt wieder
cannot convert `sFig (*)[3]' to `sFig**' for argument `1' to `void setze(sFig**)'hmm
-
so:
void setze(sFig hallo[][3]){ hallo[1][1].figur=1; hallo[0][1].farbe=1; }
oder so:
void setze(sFig hallo[3][3]){ hallo[1][1].figur=1; hallo[0][1].farbe=1; }
-
ja so funzt das. aber was wird denn jetzt genau übergeben? mit setze(hi) wird doch die adresse das arrays übergeben, oder?
und setze(sFig hallo[][3]) erwarten auch einen zeiger, und zwar einen auf ein array mit 3 Inhalten?
aber warum funzt dann nicht setze(sFig *hallo), denn hier wird doch auch einfach ein zeiger erwartet, ich verstehe die interpretation von setzte(sFig hallo[][3]) nicht genau...Aber vielen Dank schonmal!
-
außerdem gibt er nun 12009055971 aus, was wohl adressen sein werden....
-
nein, mein fehler, feld[0][1] war einfach nicht initialisiert, hatte also komischen wert.
danke dir nochmal
-
ich werde hier noch verrückt, warum geht das denn nu schon wieder nicht?
#include <stdio.h> typedef struct Position { int x; int y; } sPos; void setze(sPos *pos){ *pos.x=1; *pos.y=1; } int main(){ sPos pos; setze(&pos); }
request for member `x' in `pos', which is of non-class type `sPos*'
-
man das ist hier schon ein monolog....
habs mal wieder selbst gefunden, halte jetzt auch die klappe
muss natürlich
(*ziel).x = 1;
sein
-
lorsch schrieb:
aber was wird denn jetzt genau übergeben? mit setze(hi) wird doch die adresse das arrays übergeben, oder?
Ja.
lorsch schrieb:
und setze(sFig hallo[][3]) erwarten auch einen zeiger, und zwar einen auf ein array mit 3 Inhalten?
Etwas unglücklich formuliert. setze() erwartet ein Array (unsized), wobei jedes Element vom Typ sFig[3] sein muss.
lorsch schrieb:
aber warum funzt dann nicht setze(sFig *hallo)
Weil hier nur ein Array mit Elementen vom Typ sFig akzeptiert wird.
lorsch schrieb:
muss natürlich
(*ziel).x = 1;
sein
Oder du schreibst
ziel->x = 1;
-
printf("%d\%d",hi[1][1].figur,hi[1][1].farbe);
was macht denn das '\' so ganz alleine da drin? ist doch keine Escapesequenz...
mfg (c)h
-
Vielleicht will er ja sowas
printf("%d\\%d",hi[1][1].figur,hi[1][1].farbe);