char zeiger
-
hallo
mir ist folgendes nicht ganz klar.
class Basic { public: Basic(char *msg); private: char *pMsg; }; Basic::Basic(char *msg) { *pMsg = *msg; }ich dachte eigentlich das mit *pMsg = *msg; der zeiger referenziert wird? also das pMsg auf msg zeigt? jedoch ist der inhalt dann irgend ein zeichenwirrwarr. wenn ich das ganze aber so mache pMsg = msg; stimmt es. ich dachte bei zeigern muss man immer mit dem stern-operator arbeiten? pMsg = msg; würde für mich bedeuten das der variable der wert einer anderen variable zugewiesen wird.

-
zeiger__ schrieb:
pMsg = msg; würde für mich bedeuten das der variable der wert einer anderen variable zugewiesen wird.
Genau so ist es. Der Wert der Variable ist eben ein Zeiger. Du weist dem Zeiger "pMsg" den Wert des Zeigers "msg" zu, somit zeigen beide Zeiger auf den selben Speicherbereich.
-
zeiger__ schrieb:
ich dachte bei zeigern muss man immer mit dem stern-operator arbeiten?
Nein, musst du nicht. Der Stern davor bedeutet Dereferenzieren. Und das brauchst du nur, wenn du auf die Speicherstelle zugreifen willst, auf die der Zeiger zeigt.
*pMsg = *msg;Deshalb ist dies im ctor kein gültiger Code. Der Zeiger pMsg besitzt ja noch gar keinen gültigen Wert (Adresse), deshalb darfst du diesen auch noch nicht dereferenzieren.
-
char Variable1
char *Zeiger1 = &Variable1
char Variable2
char *Zeiger2 = &Variable2
*Zeiger1 entspricht Variable1
*Zeiger2 entspricht Variable2
Zeiger1 entspricht &Variable1
Zeiger2 entpsricht &Variable2
*Zeiger1 = *Zeiger2 entspricht also Variable1 = Variable2Und wie groovemaster schon gesagt hat, zeigt Zeiger2 in deinen Code ja noch nicht auf eine Variable.
mfg.