Der Wert, der im Function-Pointer "* fun" von der Struktur unten enthalten ist, ist falsch gedruckt und ich finde den Weg nicht richtig zu drucken. Was ist der richtige Code dafür? Der Code:wie man den Wert eines Funktionszeigers aus einer Struktur ausdruckt
struct t { //structure definition
int a;
int (*fun) (int a);};
int get_a (int a) { //function definition
a = a*2;
return a;}
int main() {
t test; //variable creation
get_a(5); //function activating
test.fun = &get_a; //assignation to the pointer function
printf ("%d\n",*(test.fun)); //THE NUMBER 4199360 IS WRITTEN INSTEAD OF '10'.
return 0;
}
Zuerst 'printf ("% d \ n ", * (test.fun));' ist ** undefiniertes Verhalten **. Zweitens, warum erwarten Sie, dass ein Funktionszeiger einen bestimmten Wert wie 10 hat? –
Es gibt keine standardkonforme Möglichkeit, einen Funktionszeiger auszudrucken. – Olaf
Ich glaube, OP versucht, den Rückgabewert des Funktionszeigers zu drucken, wenn ein Argument von "5" übergeben wird. –