Kadaj Geschrieben 30. November 2011 Geschrieben 30. November 2011 Hallo, ich hab mir ein kleines C-Programm geschrieben um den Umgang mit Funktionen und Strukturen zu lernen, aber ich bekomme einen Speicherzugriffsfehler. Sieht jemand wo das Problem liegt? Danke im Voraus. :confused: #include <stdio.h> #include <stdlib.h> #include <string.h> struct stadt { int baumzahl; int strassenzahl; struct //struktur in der struktur { int kinder; int etagen; char namehund[32]; }haus; }; void ausgabe( struct stadt A, int i ) //das soll die Funktion sein, die ich in der schleife aufrufe { printf("Ausgabe von Stadt Nr.: %d \n",i ); printf("Es gibt %d Bäume und %d Strassen \n",A.baumzahl, A.strassenzahl ); printf("Im Haus gibt es %d Kinder, %d Etagen und der Hund heißt %s \n",A.haus.kinder, A.haus.etagen,A.haus.namehund); } int main() { printf("1"); int i; struct stadt reise[4]={ {230,10,{2,3,"Bello"}}, {1290,70,{7,4,"Hasso"}}, {2000,9,{1,4,"Goofy"}}, {40,340,{2,3,"Flash"}} }; printf("2"); while ( i != 4 ) { printf("3"); ausgabe( reise[i], i ); i++; } printf("Ende\n"); return 0; } [/php] Zitieren
Klotzkopp Geschrieben 30. November 2011 Geschrieben 30. November 2011 i wird nicht initialisiert. Zitieren
Kadaj Geschrieben 30. November 2011 Autor Geschrieben 30. November 2011 Das ging ja schnell, danke! :-) An welcher Stelle denn? In der main hab ich es in der 2. Zeile initialisiert und der void übergebe ich es doch? Zitieren
Kadaj Geschrieben 30. November 2011 Autor Geschrieben 30. November 2011 (bearbeitet) Ah, natürlich, vielen Dank! Es funktioniert^^ Komisch, mein Prof hat gestern erzählt, wenn eine Variable nicht initialisiert wird, dann wird sie automatisch mit 0 belegt, damit man sich keine Informationen über das, was zuvor im Speicher gestanden hat, holen kann... das ist hier wohl nicht passiert? Bearbeitet 30. November 2011 von Kadaj Zitieren
Guybrush Threepwood Geschrieben 30. November 2011 Geschrieben 30. November 2011 Nein in C oder C++ werden Variablen nicht automatisch initalisiert sondern haben ein zufälligen Wert bzw. das was gerade im Speicher an der Stelle stand als Wert. Zitieren
BigWookie Geschrieben 1. Dezember 2011 Geschrieben 1. Dezember 2011 Ausser man verwendet z.b. Visual Studio und den Debug Modus, in diesem werden alle Variablen mit 0 initialisiert, was spaeter zu haesslichen fehlern fuehren kann Zitieren
Klotzkopp Geschrieben 2. Dezember 2011 Geschrieben 2. Dezember 2011 (bearbeitet) Ausser man verwendet z.b. Visual Studio und den Debug Modus, in diesem werden alle Variablen mit 0 initialisiertDas stimmt nicht. Variablen mit statischer Lebensdauer (global oder static) werden immer default-initialisiert (für POD-Typen heißt das 0), egal ob Debug oder Release, das verlangt der Standard. Uninitialisierte lokale Variablen initialisiert Visual C++ im Debug-Modus mit einem auffälligen Bitmuster (0xCC). Bearbeitet 2. Dezember 2011 von Klotzkopp Zitieren
BigWookie Geschrieben 2. Dezember 2011 Geschrieben 2. Dezember 2011 Da hast du recht, hatte ich falsch in Erinnerung. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.