Problem mit verkettete Liste
-
Hi, ich bin grad dabei eine verkette Liste zu bauen. Ich habs so :
struct list{ struct list *next; char Interpret[100]; char Titel[100]; char Album[100]; int Jahr; }; struct list *baem = NULL; // FEHLER struct list *neu; baem = malloc (sizeof (struct list));
Wenn ich kompilier, zeigt er mir nen Fehler an, und zwar :
1)Fehlender Typspezifizierer - int wird angenommen...
2)'baem': 'int' unterscheidet sich von 'list *' in Bezug auf die Anzahl vorgenommener Dereferenzierungen
3)'Initialisierung': 'void *' kann nicht in 'int' konvertiert werdenAlles in einer Zeile
Aber ich versteh nicht warum das nicht so geht, laut einem Buch nämlich schon.
Kann mich vll. einer aufklären ?
-
Probiere mal das und berichte uns wieder:
struct list * baem = (struct list *) NULL;
Zeh Mau
-
kommt das selbe bei raus, trotzdem danke für den Versuch
-
Probiere mal das und berichte uns wieder:
Ersetze NULL durch 0x0
und sag an, was NULL ist!Zeh Mau
-
Dein Code sieht ordentlich aus. Ich tippe auf einen Syntaxfehler vor struct list *baem = NULL;
-
Also wenn ich NULL durch 0x0 ersetze passiert nix, ich bekomme den selben Fehler.
Wenn das halt so mache :
struct list *baem = NULL; //baem = malloc (sizeof (struct list));
Dann geht das ganze zwar, aber...
int Neuertag() { int x=1; char i; system("cls"); printf("Interpret : "); scanf("%s",baem->Interpret); ... }
bekomme einen (Speicher)Fehler nach der Eingabe von "Interpret:"
Ich hab vorher mal versucht "struct list *baem = NULL;"
in die Funktion Neuertag() einzutragen, komischer gings dann, also ohne die Fehlermeldung oben und ohne Speicherfehler..Ist das normal ?
-
Kann es sein, dass du modulglobale Zuweisungen mit modullokalen Zuweisungen durcheinanderbringst. Mir scheint es, als benutzt du malloc() mit Zuweisung außerhalb von main(). Seltsam. Vielleicht gibt es einen kompletten Codeausschnitt.
?
-
ok, also wenn ich die Funktion so schreib gehts
int Neuertag() { baem = (list *) malloc(sizeof (list)); int x=1; char i; system("cls"); printf("Interpret : "); scanf("%s",baem->Interpret); ... }
Kein plan warum...
-
Ja kann sein das ich da was durcheinander bringe, bin noch nicht so geübt darin.
Aber der ganze Code ist ziemlich lang und glaube nicht das du dir das antun willst ^^
-
Dein Problem:
Du hast ganz normalen Code außerhalb von main() definiert und in keiner anderen Funktion. So funktionert C aber nicht. Keep it in functions, please.
Ich jedenfalls rate heute nicht mehr weiter! :xmas2:
-
ich hab eigentlich nur die Variablen ausserhalb der Funktionen, ist das falsch ?
Trotzdem danke für den Tip,werds mir merken.
-
naja, wenn du so was wie malloc() oder so außerhalb von Funktionen machst, gehts halt net... Siehste ja, du hast nen Compiler-Error. Des is eigentlich die Hauptsache daran, du kannst gerne (eigentlich nicht so gerne, aber du kannst) globale Variablen definieren, allerdings kann man außerhalb eines Anweisungsblockes, sei es nun eine Funktion oder so was, keine Funktionsaufrufe durchführen (so was geht zwar zum Beispiel in C# oder Java, aber nicht in C )
-
Thx für die Info. Aber wo ist den das Problem wenn ich meine Variablen Global deklarier ?
-
Das ist nicht das Problem,
eher war es der Codeblock, der außerhalb von Funktionen stand,z.B.
p = malloc(...); :xmas2:
Zeh Mau