Đó là một con trỏ tới một hàm tại NULL
.
void(*)()
là định nghĩa của con trỏ trỏ đến hàm không tham gia bất kỳ điều gì; bạn có thể đặt tên cho nó:
typedef void(*my_func)();
sau đó trong ví dụ của bạn, bạn đã có một dàn diễn viên:
(my_func)0
mang lại một con trỏ hàm để một my_func
, có nghĩa là, một chức năng chụp gì và trở về không có gì.
Sau đó, bạn coi đó là dấu sao đầu tiên (không cần thiết, afaik) và sau đó bạn gọi nó.
Vì vậy, bạn đang gọi một hàm không có đối số và không trả lại điều gì xảy ra để sống ở địa chỉ 0.
Hành vi này (thường là) không xác định và sẽ gặp sự cố ngay lập tức trên nhiều nền tảng. (Nó không phải là hành vi không xác định nếu bạn đặt một chức năng tại địa chỉ không, ít nhất tôi sẽ không nghĩ nó là gì.)
Nguồn
2010-04-09 00:51:15
Lạ khi gọi đây là tính năng ẩn. –
"Nó không phải là hành vi không xác định ... đó là một tính năng!". Không, đó là hành vi không xác định. –