Cho một mảng, nhiệm vụ là tạo hàm trả về con trỏ đến mảng các con trỏ hàm nguyên (integer function pointers).
Chương trình nhập hai giá trị, gọi hàm so sánh hai giá trị và con trỏ hàm trả về địa chỉ bộ nhớ của giá trị lớn hơn, in kết quả. Con trỏ hàm dùng để truyền địa chỉ các hàm khác nhau tại các thời điểm khác nhau, làm cho hàm linh hoạt và trừu tượng hơn. Con trỏ hàm có thể đơn giản hóa code bằng cách cung cấp cách đơn giản để chọn hàm thực thi dựa trên giá trị runtime.
Giải thích hàm big()
Chương trình truyền hai số nguyên bằng tham chiếu đến hàm big(), so sánh hai giá trị và trả về địa chỉ bộ nhớ của giá trị lớn hơn. Giá trị trả về của big() là kiểu nguyên, có thể khác 0 hoặc bằng 0.
Ví dụ
Đầu vào – 7 13
Đầu ra – Giá trị lớn hơn là 13
Đầu vào – 8 6
Đầu ra – Giá trị lớn hơn là 8
Giải thích – Hai số nguyên so sánh, con trỏ trả về địa chỉ giá trị lớn hơn.
Cách tiếp cận
- Khai báo con trỏ nguyên, ví dụ
int *c. - Khởi tạo hai biến nguyên.
- Nhập hai giá trị.
- So sánh hai giá trị.
- Con trỏ *c trả về địa chỉ giá trị lớn hơn.
Thuật toán
Start
BƯỚC 1 → Tạo hàm truyền tham số.
Int *big(int &, int &)
END
BƯỚC 2 → Gọi main() nhập, in hai giá trị và khởi tạo con trỏ *c.
int a, b, *c
call c = big(a,b)
print c
END
BƯỚC 3 → So sánh hai số nguyên, trả về địa chỉ giá trị lớn hơn qua con trỏ c.
So sánh
If(x > y)
return(&x)
else
return(&y)
END
STOP
Ví dụ
#include<iostream.h>
Int *big(int&, int&);
Int main() {
Int a, b, *c;
c = big(4, 7);
cout<<"The bigger value is"<<*c<<"\n";
return 0;
}
Int *big(int&x, int&y) {
If(x > y)
return(&x);
else
return(&y);
}
Kết quả
The bigger value is 7 The bigger value is 5