C Problem
Marcel
- programmiertechnik
Hallo
Ich habe das Problem, dass ich in C Zeilen von einer Datei einlesen und diese danach weiterverarbeiten muss. Somit weiss ich nicht, für wieviele Zeilen ich in einem Array Speicher reservieren muss. Darum verwende ich in der Funktion dateieinlesen() malloc und realloc um Speicher dynamisch zu allozieren. Das klappt auch prima. Aber wie kann ich nun in der main Funktion auf dieses Array zugreifen?
int **test;
void dateieinlesen() {
// Array erstellen mit malloc/realloc
// und Werte zuweisen
// Bsp. test[i] = 1;
}
int main(int argc, char *argv[])
{
dateieinlesen();
test[0] = 1; // FEHLER
return 0;
}
Gruss Marcel
Hallo Marcel
Das klappt auch prima. Aber wie kann ich nun in der main Funktion auf dieses Array zugreifen?
Du deklarierst einen globalen Zeiger, der auf das erste Element Deines Feldes verweist und benutzt dann diesen.
Gruß,
Maddin
Du bist nicht zufällig an der Uni-Erlangen, in "Systemprogrammierung 1" (oder softwaresysteme, wie's etz heisst glaub ich)?
Mir kommt das Problem so verdächtig bekannt vor aus meiner Uni-Vergangenheit ;)
Viele Grüße,
Jörg
Sup!
Kann ich mich gar nicht dran erinnern...
Gruesse,
Bio
Ho, Bio,
Kann mich aber auch täuschen, aber die Aufgabe hat mich damals vor ein ähnliches Problem gestellt :)
你好 Marcel,
int **test;
Du hast hier einen Pointer auf einen Pointer (oder auch ein
zweidimensionales Array, das ist das Gleiche).
test[0] = 1; // FEHLER
Hier dereferenzierst du den Pointer auf der ersten Ebene, also nur einmal.
Da du aber einen Pointer auf einen Pointer hast, ist das falsch. Du
müsstest also mindestens *test[0] = 1 schreiben, oder auch test[0][0] = 1.
再见,
克里斯蒂安