Jest to wskaźnik do funkcji w NULL
.
void(*)()
to definicja wskaźnika do funkcji, która nie przyjmuje argumentów, które niczego nie zwracają; można nazwać go:
typedef void(*my_func)();
następnie w Twojej przykład masz obsadę:
(my_func)0
daje wskaźnik funkcji do my_func
, czyli funkcją biorąc nic i nic nie wraca.
Następnie usuwasz je za pomocą wiodącej gwiazdki (co jest niepotrzebne, afaik), a następnie wywołujesz ją.
Wywołujesz funkcję, która nie przyjmuje żadnych argumentów i nie zwraca niczego, co zdarza się przy zerowym adresie.
Jest to (zazwyczaj) niezdefiniowane zachowanie i natychmiast zawiesi się na wielu platformach. (To nie jest niezdefiniowane zachowanie jeśli umieścisz funkcję na adres zerowy, przynajmniej ja nie sądzę, że było).
Dziwne, że nazywamy to ukrytą funkcją. –
"To nie jest niezdefiniowane zachowanie ... to funkcja!". Nie, to niezdefiniowane zachowanie. –