59 votes

Qu’est-ce qui fait ((vide (*)()buf)(); Veux dire?

Je suis en résolution d’un défi d’exploitation binaire sur picoCTF et est tombé sur ce morceau de code:

où `` est un tableau de caractères.

J’ai résolu le défi, mais ne semble pas comprendre ce qu’il fait exactement. J’ai regardé ce fil, mais je ne pouvais pas le faire.

Qu’est-ce `` que ça veut dire ?

132voto

Joachim Pileborg Points 121221

`` est un type, le type étant « pointeur de fonctionner qui prend des arguments pour une durée indéterminée et ne renvoie aucune valeur ».

`` est un type de fonte au type ci-dessus.

jette au type ci-dessus.

`` appelle la fonction (sans passer d’arguments).

En bref: Il dit au compilateur de `` traiter comme un pointeur à une fonction, et d’appeler cette fonction.

11voto

P__J__ Points 12922

pointeur est converti au pointeur en fonction vide en `` prenant un nombre non spécifié de paramètres, puis déférence (c’est à dire fonction appelée).

9voto

lukeg Points 1607

Il s’agit d’un typecast, suivi d’un appel de fonction. Tout d’abord, est jeté au pointeur à une fonction qui revient . La dernière paire de parenthèses signifie que la fonction est alors appelée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X