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: <Kiểu dữ liệu trả về> (*<tên con trỏ hàm>)<danh sách đối số>; 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 <Kiểu dữ liệu trả về> (*<tên con trỏ hàm>)<danh sách đối số>; 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: <tên biến con trỏ hàm> <tên hàm>; #trực tiếp. <tên biến con trỏ hàm> &<tên hàm>; #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: <kiểu dữ liệu> <tên biến>= *<tên con trỏ hàm>;#thông thường <kiểu dữ liệu> <tên biến>= <tên con trỏ hàm>;#ngắn gọn *Cả 2 cách đều dùng được như nhau. . báo p1,p2 là hai con trỏ hàm. 2. Gán giá trị cho con trỏ hàm: Có 2 cách: <tên biến con trỏ hàm& gt; <tên hàm& gt;; #trực tiếp. <tên biến con trỏ hàm& gt; &<tên hàm& gt;; #thông qua. 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. chỉ. p=p2; #Sai 3. Gọi con trỏ hàm: Có 2 cách: <kiểu dữ liệu> <tên biến>= *<tên con trỏ hàm& gt;;#thông thường <kiểu dữ liệu> <tên biến>= <tên con trỏ hàm& gt;;#ngắn gọn *Cả