strukturen übergeben
-
die strukturen werden prinzipiell vor den funktionsdefinition geschrieben. das bedeutet nicht gleich, dass es eine globale variable ist. erst wenn du speicherplatz für die struktur reservierst, was dann innerhalb einer funktion passiert, dann hast du eine "variable" vom typen deiner struktur:
typedef struct foo { char bla[32]; int ka; }bar; int funktion( bar* ptr_auf_struktur ) { // struct verwenden } int main() { bar* dein_struct = ( *bar )malloc( sizeof( *bar ) ); funktion( &dein_struct ); }
-
hando schrieb:
bar* dein_struct = ( *bar )malloc( sizeof( *bar ) ); }
nana, wer wird den hier casten wollen?
bar* dein_struct = malloc(sizeof(bar));
-
Eure & beim Funktionsaufruf sind beide falsch.
-
Tim schrieb:
Eure & beim Funktionsaufruf sind beide falsch.
bei Dragonslayer stimmts aber (nur alles davor ist verkehrt)...
-
Nein tut es nicht.
-
Tim schrieb:
Nein tut es nicht.
ok, hast mich überzeugt
-
tut in der tat nicht hab ich grad beim compilen gemerkt, der cast operator beim aufruf der funktion muß weg...
-
So und nu machen wirs mal komplett schön und richtig
struct foo { char bla[32]; int ka; }; int funktion (struct foo * ); int main () { struct foo a; struct foo *p = &a; funktion(p); return 0; } int funktion(struct foo *zz) { // hier mach was damit }
-
Wozu du da noch eine Extra Pointer-Variable anlegst, ist aber fragwürdig. Da reicht
int main () { struct foo a; funktion(&p); return 0; }
völlig aus
-
codefrag schrieb:
So und nu machen wirs mal komplett schön und richtig
ein compileversuch würde schon an der ersten zeile scheitern
-
Also ich finde das
codefrag schrieb:
struct foo ( char bla[32]; int ka; );
eigentlich fragwürdiger
edit: und wieder mal zu lahm
-
Ich weiss gar nicht was ihr habt - da stehen doch die "{}"
@ CStoll: Joa
aber um es zu verdeutlichen habe ich nochmals nen Pointer angelegt..
Aber ich seh schon... ihr Freaks :p
-
codefrag schrieb:
Aber ich seh schon... ihr Freaks :p
pah, lern programmieren