Typenumwadndlung - Zeiger
-
Guten Morgen,
Aufgabenstellung:
Welche der folgenden Anweisungen a) bis g) sind korrekt und welche sind fehlerhaft? Begründen Sie jeweils kurz Ihr Ergebnis. Begründen Sie jeweils kurz Ihr Ergebnis (Ohne Begründung gibt es keine Punkte !!!). Falls Die Anweisung korrekt ist, geben Sie bitte an, welcher Wert der betroffenen Variablen zugewiesen wird. Die Variable a sei an der Adresse 500, die erste Variable des Arrays b an der Adresse 1000 , die Variable c sei an der Adresse 2000, der Zeiger d sei an der Adresse 5000 gespeichert.char a, b[ ]="Text";
int c, *d;e) b = (int)d;
Kann mir einer erklären, warum diese Anweisung falsch ist? Liegt das daran das es verschiedene Typen sind oder/und weil der Zeiger rechts steht?
Gruß juniorcrew
-
b ist ein Array, einem Array kann man keinen Wert zuweisen (nicht zu verwechseln mit einer Initialisierung).
-
Achja dankeschön!
Gruß juniorcrew
-
-
d ist nur ein deklarierter Zeiger. Solange der auf nichts konkretes zeigt, kann man damit auf der rechten Seite einer Anweisung nichts anfangen.
-
berniebutt schrieb:
d ist nur ein deklarierter Zeiger. Solange der auf nichts konkretes zeigt, kann man damit auf der rechten Seite einer Anweisung nichts anfangen.
doch schon
int x=22,*xx,**xxx; xxx = &xx; xx = &x; **xxx = 11; printf("%d",**xxx);
:p
lg lolo
-
berniebutt schrieb:
d ist nur ein deklarierter Zeiger. Solange der auf nichts konkretes zeigt, kann man damit auf der rechten Seite einer Anweisung nichts anfangen.
naja, du solltest ihn nur nicht dereferenzieren, das ist ebenso sinnlos, wie ein lesezugriff auf jede uninitialisierte lokale variable. ein zeiger ist auch nur eine variable und verhält sich auch so (ist er z.b. static oder ausserhalb einer funktion, wird er beim anlegen automatisch auf 0 gesetzt. ist er's nicht, ist sein inhalt unvorhersehbar).