Hallo Matze.
Code:
void main()
{
char Buchstab, *pointerBuch = &Buchstab;
pointerBuch = "Adam Riese"; // (1) -> richtig
pointerBuch = "a"; // (2) -> richtig
*Buchstab = "xyz"; // (3) -> falsch, als falsch markiert: *
}
In C ist ein string, wie man ihn aus Pascal/Delphi kennt kein nativer Datentyp, sondern ein Pointer auf ein Zeichen. Zum String gehören dann alle Zeichen nach dem, auf das gezeigt wird, bis zum Nullzeichen \0.
Daher ist bei 1 und 2 der Ausdruck auf der rechten Seite ebenfalls ein Pointer und kann deshalb zugewiesen werden.
Bei 3 steht aber auf der linken Seite ein Ausdruck des Typs char, an den natürlich kein Pointer zugewiesen werden kann. Wenn man den Stern allerdings weglässt ergibt sich:
Hier sind wieder beide Seiten vom Typ char* und die Zuweisung funktioniert!
EDIT: Blödsinn...
Buchstab ist eben kein Pointer und auch ohne Stern geht's nicht...
Gruß,
Waldteufel