Kadaj Geschrieben 30. November 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 30. November 2011 Teilen Geschrieben 30. November 2011 i wird nicht initialisiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kadaj Geschrieben 30. November 2011 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Kadaj Geschrieben 30. November 2011 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 30. November 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BigWookie Geschrieben 1. Dezember 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. Dezember 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
BigWookie Geschrieben 2. Dezember 2011 Teilen Geschrieben 2. Dezember 2011 Da hast du recht, hatte ich falsch in Erinnerung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.