004
03.04.2007, 00:23 Uhr
Pablo
Supertux (Operator)
|
Zitat: |
achso, muss ich wenn ich struct datentyp angelegt habe, dynamische speicher freigeben und diesen dann auf *p initialisieren?
|
Der struct sagt dem Compiler nur wie er die Bytes zu verstehen hat (wie sie aligniert sind, usw), mehr nicht. Wie bei jedem Datentyp muss jede Instanz irgendwo gespeichert sein. Ein Zeiger ist eine Variable, deren Inhalt eine Adresse ist, diese muss initialisiert werden. Wenn du nur "typ* zeiger;" machst, dann sagst du, dass "zeiger" ein Zeiger auf eine Stelle des Speicher ist, die als 'typ' gelesen werden. Auf welche Stelle "zeiger" zeigen muss, hast du damit nicht getan und deswegen ist der Zugriff über "zeiger" undefiniert.
Zitat: |
Also ich habe gerade dein vorschlag mit malloc getestet! aber es funktioniert nicht!
|
Was heißt "es funktioniert nicht!"?
malloc ist kein Zeiger, malloc ist eine Funktion, die einen void* Zeiger, sprich eine Speicheradresse, zurückgibt. Diesen Speicher nennt man dynamischen Speicher.
Zitat: |
Es ist es richtig, dass ich ihn mit "struct bruch" caste? So?:
|
In C++ ja, in C nein, es ist unnötig, da C void* implizit castet.
Zitat: |
was bedeutet denn "if(!p)"?
|
das ist äquivalent zu if(p != NULL) -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 03.04.2007 um 00:27 Uhr von Pablo editiert. |