Grundlagen der Programmiersprache C
void f(int x) { x = 10; }
void g(int *p) { *p = 20; }
int main(void) {
int a = 1, b = 1;
f(a);
g(&b);
printf("%d %d\n", a, b);
return 0;
}Welche Ausgabe erzeugt das obige Programm bei der Ausführung?
- A1 20
- B10 1
- C10 20
Antwort und Erläuterung anzeigen
Antwort: A. 1 20
In C wird jedes Argument einer Funktion als Wert übergeben (Call by Value): Beim Aufruf f(a) wird der Wert 1 von a nach x kopiert. Setzt f die Variable x auf 10, ändert sich nur die Kopie; das a des Aufrufers bleibt 1. Bei g(&b) wird die Adresse von b übergeben, daher schreibt *p = 20 in g direkt in b, und b wird 20. Soll eine Funktion eine Variable des Aufrufers ändern, übergibt man wie hier einen Zeiger.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C