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]
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?
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
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.
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
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
BigWookie Geschrieben 2. Dezember 2011 Geschrieben 2. Dezember 2011 Da hast du recht, hatte ich falsch in Erinnerung.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden