Sichtbarkeitsbereich von Variablen
-
In einer Aufgabe soll ich ein Array lokal in einer Funktion definieren. Die Funktion darf kein Rückgabewert haben. Aber totzdem soll ich von einer anderen Funktion auf den lokalen Array zugreifen können, aber wie mach ich das.
Codebeispiel zur besseren Erklärung:
void F1(void) { int a[10]; ..... } void F2(void) { int i; for(i=0; i<10; i++) { printf("%i \n", a[i]); } ..... } main(void) { F1(); F2(); return 0; }
Also beide Funktionen müssem in main aufgerufen werden, der Array darf nicht global sein und F1 darf keinen Rückgabewert haben.
-
malloc+free?
oder kannst du das array in main deklarieren und dann in der funktion manipulieren?
-
Erstmal danke für die Antwort.
Ich muß den Array in F1 definieren.
Wenn ich den Speicherplatz mit malloc allokiere, bleibt dann die Sichtbarkeit über die Funktion hinaus bestehen?
Ich werde das mal testen.
-
du muesstest es so machen:
void F1(int **p) { *p = malloc(sizeof(**p) * 666); } void F2(int *a) { while (*a) printf("%d\n", *a++); // hier kommt mit sicherheit schwachfug raus } int main(void) { int *a; F1(&a); F2(a); free(a); }
-
ok danke, das hilft mir erst mal weiter.
-
Edit: na, sry, war falsch von mir
-
Oder ohne Malloc:
void F1(int **p) { static int a[10]; ... *p = a; } void F2(int *a) { while (*a) printf("%d\n", *a++); // hier kommt mit sicherheit schwachfug raus } int main(void) { int *a; F1(&a); F2(a); }
-
Ja, so in etwa hab ich es dann auch hingewurschtelt