Một chương trình đang chạy luôn chiếm một không gian bộ nhớ xác định trong bộ nhớ chính. Cả đoạn chương trình thực thi đã được dịch từ mã mà bạn viết cùng các biến được sử dụng đều được đưa vào trong không gian bộ nhớ này. Vì vậy hàm cũng có địa chỉ. Con trỏ hảm là con trỏ trỏ đến địa chỉ của hàm và có thể gọi hàm thông qua địa chỉ đó. | BẢN BÁO CÁO VỀ CON TRỎ HÀM MSSV:1012055 Function Pointer là gì? Một chương trình đang chạy luôn chiếm một không gian bộ nhớ xác định trong bộ nhớ chính. Cả đoạn chương trình thực thi đã được dịch từ mã mà bạn viết cùng các biến được sử dụng đều được đưa vào trong không gian bộ nhớ này. Vì vậy hàm cũng có địa chỉ. Con trỏ hảm là con trỏ trỏ đến địa chỉ của hàm và có thể gọi hàm thông qua địa chỉ đó. 1. Khai báo: Vì con trỏ hàm cũng là một biến nên ta khai báo theo cách thông thường: a. Khai báo trực tiếp: (*); Ví dụ: int (*cong)(int a, int b); float (*giaithua((float a); Note: không trả về void. Void (*??)(int a,float b); b. Khai báo gián tiếp: typedef (*); Ví dụ: Typedef (*p)(int , int ); #khai báo kiểu “p” mới P p1,p2; # khai báo p1,p2 là hai con trỏ hàm. 2. Gán giá trị cho con trỏ hàm: Có 2 cách: ; #trực tiếp. &; #thông qua địa chỉ. Note: Hàm được gán phải có danh sách đối số tương ứng. Ví dụ: Int p1(int x,int y); Int p2(int x,float y); Typedef (*p)( int, int); p=p1; #trực tiếp p=&p1; #thông qua địa chỉ. p=p2; #Sai 3. Gọi con trỏ hàm: Có 2 cách: = *;#thông thường = ;#ngắn gọn *Cả 2 cách đều dùng được như nhau.