What does ((void (*)())buf)(); mean?
It casts the character array to a pointer to a function taking no arguments and returning void
, and then calls it. Dereferencing the pointer is not required due to how function pointers work.
An explanation:
That "character array" is actually an array of machine code. When you cast the array to a void (*)()
and call it, it runs the machine code inside of the array. If you provided the array's contents I could disassemble it for you and tell you what it's doing.
pointer buf
is converted to the pointer to void function taking unspecified number of parameters and then dereferenced (ie function called).
void (*)()
is a type, the type being "pointer to function that takes indeterminate arguments and returns no value".
(void (*)())
is a type-cast to the above type.
(void (*)())buf
casts buf
to the above type.
((void (*)())buf)()
calls the function (passing no arguments).
In short: It tells the compiler to treat buf
as a pointer to a function, and to call that function.
It's a typecast, followed by a function call. Firstly, buf
is cast to the pointer to a function that returns void
. The last pair of parenthesis means that the function is then called.