char *(*d(long))(double);
-
Hallo,
Aufgabe: Erkläre welchen Typ die Variablen haben:
4) char *(*d(long))(double);Hab ich noch nie gesehen die Deklaration. Was ist d?
greetz KN4CK3R
-
-
d ist der Name der Funktion, die da deklariert wird.
-
die Seite is ja praktisch
declare d as function (long) returning pointer to function (double) returning pointer to char
bedeutet das, dass d ein Zeiger auf eine Funktion ist, die einen long als Parameter entgegen nimmt und einen Zeiger auf eine Funktion zurückgibt, die einen double als Parameter entgegen nimmt und selbst einen Zeiger auf char zurückgibt?
greetz KN4CK3R
-
KN4CK3R schrieb:
bedeutet das, dass d ein Zeiger auf eine Funktion ist, die einen long als Parameter entgegen nimmt und einen Zeiger auf eine Funktion zurückgibt, die einen double als Parameter entgegen nimmt und selbst einen Zeiger auf char zurückgibt
Bei deiner Aussage ist der Hund drin. Du erwähnst 3x Zeiger, es kommen aber nur 2 vor.
char *(*d(long))(double); // d ist eine Funktion, die ein long-Argument erwartet und einen Zeiger auf eine Funktion zurückgibt, die ein double-Argument erwartet und ein Zeiger auf ein char zurückgibt.
schau auch mal hier: http://ieng9.ucsd.edu/~cs30x/rt_lt.rule.html
-
Antwort: Keine Ahnung, wer schreibt schon so einen Mist ohne Hilfs-
typedef
?
-
+1
-
Dozenten die Studenten ärgern wollen
aber auch +1 von mirgreetz KN4CK3R
-
Spaß mal beiseite, so etwas sollte man in Produktionscode selbstverständlich nicht nackt verwenden (was nicht bedeutet, dass es niemand jemals tut). Ich gehe aber auch davon aus, dass es dem Dozenten dabei nicht darum geht, dass seine Studenten die nackte Deklaration von signal ohne Hilfsmittel entziffern können müssen, sondern um die Syntax für Array- und Funktionszeiger sowie die Möglichkeiten, diese zu kombinieren.
Jetzt mal ehrlich: Wärst du vorher auf die Idee gekommen, dass man Zeiger auf Funktionen aus Funktionen zurückgeben kann? Jetzt weißt du, dass und wie es geht, und damit ist der pädagogische Zweck wohl erfüllt.