int *p(int a);
Ich bezweifle stark, dass es eine Zeigerdeklaration ist. Wenn es besser geschrieben ist, können Sie vielleicht verstehen, dass es eine Funktion ist, die eine int
übernimmt und einen Zeiger auf eine int
zurückgibt.
int (*p)(int a);
Ein grundlegender Funktionszeiger. verweist auf eine Funktion, die eine int
und eine int
zurückgibt. Zum Beispiel:
int foo(int x) { return x+1; }
p = &foo;
Der letzte ist ein bisschen kompliziert, weil es ungültig ist. In den Klammern sollte eine Nummer stehen. Ich nehme an, es ist korrigiert (einschließlich eines Tippfehlers) wie unten.
int *(*p)(int(*a)[3]);
Es ist ein Funktionszeiger, nimmt die Funktion einen Zeiger auf ein Feld von 3 int
s, und einen Zeiger auf int
zurückzukehren. Zum Beispiel:
int *extract_first(int (*a)[3]) {
return (*a);
}
p = &extract_first;
Versuchen Sie https://cdecl.org/ und geben Sie den Ausdruck ohne das 'a' ein Beispiel:' int * (* p) (int (*) []) ' – 4386427
Das einzige, was Sie über die dritte wissen müssen man soll es nie benutzen. Wenn Sie dies tun, werden Sie möglicherweise direkt nach der Überprüfung des Codes entlassen. –