Grundlagen der Programmiersprache C
int add(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }
int main(void) {
int (*op[2])(int, int) = {add, mul};
int r = 1;
for (int i = 0; i < 2; i++)
r = op[i](r, 3);
printf("%d\n", r);
return 0;
}Welche Ausgabe erzeugt das obige Programm mit einem Array von Funktionszeigern bei der Ausführung?
- A3
- B6
- C12
Antwort und Erläuterung anzeigen
Antwort: C. 12
op ist ein Array aus zwei Zeigern auf Funktionen, die zwei int-Werte erhalten und einen int-Wert zurückgeben; op[0] enthält die Adresse von add, op[1] die von mul. op[i](r, 3) ruft die Funktion auf, auf die der jeweilige Zeiger zeigt. Bei i = 0 ergibt sich r = add(1, 3) = 4, bei i = 1 r = mul(4, 3) = 12. Ein Funktionszeiger wird etwa für Tabellen zum Umschalten zwischen Verarbeitungen, für Interrupt-Vektoren oder für Callbacks verwendet.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C