Tôi nghĩ rằng tôi có thể bị bệnh "lập trình ngẫu nhiên" sợ hãi, ít nhất là khi nói đến typedef và các con trỏ hàm. Vì vậy, tôi đã thử nghiệm với tất cả các loại kết hợp liên quan đến việc này để phân tích các kết quả dựa trên tất cả các đầu ra tôi nhận được.Cách typedef hoạt động với các con trỏ hàm
Nhưng khi tôi tiếp tục thử các kết hợp khác nhau, thay vì phân tích kết quả, tôi hiện chỉ bị mất trong quá trình.
Tôi hy vọng các bạn sẽ giúp tôi tìm ra mớ hỗn độn này.
mã đầu tiên ví dụ
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = &do_something;
pr(); // Hello World
mã thứ hai dụ
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = do_something;
pr(); // Hello World
Làm thế nào để cả hai mã trên ví dụ làm việc, nó như thể '&' không ảnh hưởng đến tên hàm
mã thứ ba ví dụ
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print pr;
pr = do_something; // compile error
pr = &do_something; // compile error
pr();
Tôi đã hy vọng một trong những bài tập ở trên để làm việc ở đây nhưng chết tiệt! Tôi thực sự không hiểu con trỏ hàm (và có thể typedef quá).
Điều này có thể giúp http://stackoverflow.com/questions/4298654/operator-optional-in-function-pointer-assignment –
Umm ... Tôi nghĩ bạn nên tạo cho mình một 'Lập trình C chuyên nghiệp' nó khám phá biến của C xác định quy tắc. Tôi sẽ cố gắng để tìm nó trực tuyến cho bạn – shengy
chỉ google lập trình C chuyên nghiệp, đầu tiên là cuốn sách. Tìm kiếm 'Cách khai báo được tạo thành' và tôi nghĩ bạn sẽ nhận được câu trả lời – shengy