Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (75.09 KB, 2 trang )
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);