In C, die ich habe:Zeiger verstehen. ? Was bedeutet * ((char **) gleich
char *p, *q;
p = malloc(1); //for the purpose testing only
p[0] = '!';
q = *((char **)p);
printf("p=%x q=%x\n", p, q);
printf("p=%c q=%c\n", p, q);
Es gibt noch keine Casting Warnungen waren, und der Ausgang ist:
p=1a9008 q=21
p q=!
Was im Ausdruck kommt zugeordnet q
, dh *((char **)p)
Hat sich die Art der q
nach der Zuweisung geändert
Edits:? gibt es eine err oder in meinem Code. Beim Versuch, es von einem Codefragment zu destillieren, kam ich zu einem voll funktionierenden Beispiel. Ich benutzte fälschlicherweise einen Beispielwert vom Typ char für p. Nachdem mehr vom ursprünglichen Code untersucht wurde, wurde p ein Zeigerwert zugewiesen. Also ist p ein Zeiger auf einen Zeiger.
Wenn ein Programmierer eine Besetzung verwendet, tun sie in der Regel etwas falsch –
Diese Linie ist grundsätzlich Unsinn - es ruft ** undefined Verhalten **. –
Danke an alle. Es war ein Code, den ich gefunden hatte und versuchte herauszufinden, was er tat. (Ich bin ein Neuling in C.) –