Veröffentlicht 30. November 201113 j 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]
30. November 201113 j Autor 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?
30. November 201113 j Autor 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 201113 j von Kadaj
30. November 201113 j 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.
1. Dezember 201113 j 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
2. Dezember 201113 j 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 201113 j von Klotzkopp
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.