Xin giải thích kiểu này chữ ký: void (*signal(int signo, void *(func)(int)))(int)
Giải thích void (* tín hiệu (int signo, void * (func) (int))) (int)
Trả lời
Các loại chữ ký của người signal
chức năng rõ ràng hơn một chút khi một typedef được sử dụng cho các con trỏ chức năng được thông qua xung quanh:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signo, sighandler_t func);
sighandler_t
là một con trỏ đến một chức năng mà phải mất một tham số int
và trả về không có gì. Hàm signal
lấy một con trỏ hàm như là tham số thứ hai của nó. Nó cũng trả về một con trỏ hàm của kiểu đó.
Tuyên bố C cần được đọc từ trong ra ngoài. Phần phức tạp với các khai báo hàm phức tạp là tìm ra người khai báo trong cùng (nơi bắt đầu). Thông thường, từ định danh đầu tiên không phải là mã định danh kiểu. Vì vậy, trong trường hợp này:
void (*signal(int signo, void *(func)(int)))(int)
người khai báo là signal
. Trong dấu ngoặc đơn, hậu tố là ưu tiên cao hơn tiền tố, vì vậy signal
là hàm lấy hai arg (phần (int signo, void *(func)(int))
), trả về một con trỏ (tiền tố *
) đến hàm tham gia một arg đơn (số (int)
ở cuối), và trả lại void
- 1. sizeof (int) == sizeof (void *)?
- 2. Giải thích về int? vs int
- 3. int main() và void main() hoạt động như thế nào
- 4. Giải thích int (* a) [3]
- 5. Sự khác biệt giữa chính void và int chính?
- 6. trong c: func (void) so với func()
- 7. Pointer vs Array trong định nghĩa hàm: sự khác nhau giữa void fct1 (int * p) và void fct1 (int p []) là gì?
- 8. Giải thích phương thức HashMap # hash (int)
- 9. typedef int (* pf) cần giải thích
- 10. Cố gắng hiểu ví dụ mẫu chiến lược wikipedia bằng cách sử dụng Func <int, int, int>
- 11. int * int vs (int * int) trong OCaml loại tổng
- 12. + (void) hoặc - (void) khác biệt?
- 13. vấn đề với Joda DateTime mới (int, int, int, int, int, int)
- 14. Mysql int trung bình so với hiệu suất int
- 15. Bitmap.createBitmap (nguồn Bitmap, int x, int y, int width, int height) trả sai bitmap
- 16. Hiểu lỗi kiểu: "mong đợi chữ ký Int * Int-> Int nhưng có Int * Int-> Int"
- 17. Cách hiểu "typedef int (xxx) (int yyy);"?
- 18. int ** vs int [ROWS] [COLS]
- 19. Confused bởi "... kéo dài Function1 [Int, Int]"
- 20. ý nghĩa của việc chuyển đổi int thành void * hoặc ngược lại là gì?
- 21. Nếu tôi có một con trỏ void, làm thế nào để đặt một int vào nó?
- 22. giải mã (* (void (*)()) 0)()
- 23. 32 bit int * 32 bit int = 64 bit int?
- 24. void Func không có đối số
- 25. Hash 32bit int đến 16bit int?
- 26. Giải thích về Func
- 27. Lỗi Java: java.lang.IllegalArgumentException: Tín hiệu đã được VM sử dụng: INT
- 28. Hiệu suất void JavaScript
- 29. Hãy so sánh int và unsigned int
- 30. Cách chuyển đổi int * thành int
Điều gì (int) này ở cuối? –
Tại sao câu hỏi của tôi bị bỏ phiếu? –
Lỗi cú pháp: http://www.cdecl.org/ Khai báo thực tế là gì? –