Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

BẢN BÁO CÁO VỀ CON TRỎ HÀM docx
Nội dung xem thử
Mô tả chi tiết
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