30/09/2018, 21:32
Hỏi về con trỏ HÀM trong C
Mọi người cho em hỏi. con trỏ hàm trong C được sử dụng như thế nào. múc đích của nó là gì. và gọi nó trong hàm main thì làm thế nào??
Bài liên quan
Mọi người cho em hỏi. con trỏ hàm trong C được sử dụng như thế nào. múc đích của nó là gì. và gọi nó trong hàm main thì làm thế nào??
Với những biến có sử dụng con trỏ hàm thì sau khi ra khỏi hàm các giá trị của biến đó cũng sẽ thay đổi !
Trong hàm main, gọi tới hàm đó, trước biến có sử dụng con trỏ hàm ta truyền thêm & trước biến.
ví dụ
không phải mình hỏi về tham chiếu đâu.
cái con trỏ hàm là nó sẽ có dạng
VD int *daynhauhoc(int n)
Cái đó là hàm con trỏ
Bạn có thể thao khảo bài viết rất rất chi tiết sau
http://diendan.congdongcviet.com/threads/t42977::tim-hieu-ban-chat-cua-con-tro-tu-co-ban-den-nang-cao.cpp
This post was flagged by the community and is temporarily hidden.
This post was flagged by the community and is temporarily hidden.
vì kiến thức về IT còn ít nên Bác trả lời làm e bối rồi quá.
http://diendan.congdongcviet.com/threads/t25204::con-tro-ham-trong-c-cpp-function-pointer.cpp
có thể đây là cái bạn cần
Mình có 1 VD như này:
Giả sử bạn muốn viết 1 hàm tìm những người có những đặc điewẻm riêng từ danh sahs này:
Bạn viết 1 hàm tìm những người có đặc điểm là thích thể thao, đọc sách:
Rồi xong, nhưng bây giờ bạn lại muốn viết 1 hàm khác tìm những người thích đi xem phim và xem TV,… thì bạn sẽ copy code hàm trên, đổi tên và thay thế diều kiện. Nhưng mỗi hàm gần như giống nhau về công việc của nó: lặp qua các phần tử, kiểm tra điều kiện và xuất ra màn hình nếu đúng với điều kiện, chỉ khác nhau có mỗi 1 dòng điều kiện, sẽ có rất nhiều code bị lặp lại. Để tiết kiệm thời gian, tránh code bị lặp lại, ta sử dụng con trỏ hàm
Giả sử có 1 hàm kiểm tra diều kiện cần tìm kiếm:
ta có thể khai báo con trỏ hàm của hàm trên như sau:
ở hàm main():
phải thay đổi tham số ở hàm find
sau đó gọi nó ở hàm find()
ở hàm main():
Mỗi khi gọi hàm find thì nó sẽ duyệt qua các phần tử trong mảng, kiểm tra điều kiện thông qua cách gọi hàm kiểm tra điều kiện bằng con trỏ của hàm đó mà ta đã truyền vào hàm find().
Vậy là xong, bây giờ bạn có muốn tìm kiếm những người phù hợp đi chăng nữa chỉ cần viết hàm kiểm tra điều kiện, tạo con trỏ hàm trỏ tới nó và truyền vào hàm find là xong, code ngắn hơn, sáng sủa hơn.
Cách tạo con trỏ ham trỏ tới 1 hàm:
[Kiểu trả về](*[tên con trỏ])([tham số truyền vào hàm])
Thông qua con trỏ hàm, ta có thể gọi được hàm mà nó trỏ tới.
edit: VD trên mình lấy từ trong cuốn Head First C ra, còn chỗ nào không đúng các bạn đừng gạch đá
Nếu sử dụng tốt thì con trỏ hàm sẽ trở nên rất lợi hại, lúc trước mình có dùng để làm một chương trình và đã giảm được khoảng 250 dòng code