Call by Reference - Funktionsweise bei char?
-
hallo,
folgender code:
#include <stdio.h> void function1(char *a) { a='a'; } int main() { char a; function1(&a); printf("|%c|\n",a); return 0; }meine frage ist: warum ist das nicht ok? der compiler gibt meldungen aus, und es wird auch nicht 'a' ausgegeben.
?
-
Weil a in function1 ein Zeiger ist.
Wenn du der Speicherstelle auf die a verweist einen Wert zuweisen willst, musst du den Zeiger dereferenzieren. Mit dem Dereferenzierungsoperator *Merke:
Die Definition lautetchar *a;
Dann ist auch*aeinchar(und nicht a, a ist der Zeiger))
-
Überleg mal was
a = 'a'in deiner Funktion da oben genau tut...
-
danke für die schnelle lösung.
-
Verstehst du jetzt die Meldungen vom Compiler?
Die Buchstaben sind schon sinnvoll zusammengesetzt.