Lý thuyết

Con trỏ hàm là gì?

Con trỏ hàm là một biến lưu trữ địa chỉ của một hàm, thông qua biến đó, ta có thể gọi hàm mà nó trỏ tới.

Cú pháp khai báo:

                        
kiểu_trả_về (*tên_con_trỏ)(danh_sách_tham_số);
                        
                

Gán địa chỉ của hàm cho con trỏ hàm

                
// khai báo prototype
int funcA();
int funcB();
void funcC();
double funcD(int a);

int main()
{
int(*fcnPtr)() = funcA(); // lỗi, không dùng dấu ngoặc đơn () sau tên hàm
	int(*fcnPtrA)() = funcA; // ok, con trỏ fcnPtrA trỏ đến hàm funcA
	fcnPtrA = funcB; // ok, fcnPtrA có thể trỏ đến một hàm khác có cùng cấu trúc
// fcnPtrA = &funcB; tương tự câu lệnh trên

	int(*fcnPtr1)() = funcA; // ok
	void(*fcnPtr2)() = funcA; // lỗi, kiểu trả về của con trỏ hàm và hàm không trùng nhau
	void(*fcnPtr3)() = funcC; // ok
	double(*fcnPtr4)(int) = funcD; // ok

	return 0;
}

                
        

Lưu ý: Cấu trúc (tham số và kiểu trả về) của con trỏ hàm phải khớp với cấu trúc của hàm.

Gọi một hàm bằng con trỏ hàm

                
#include< iostream> 
using namespace std;

void swapNumber(int &a, int &b)
{
	int temp = a;
	a = b;
	b = temp;
}

int main()
{
	void(*ptrSwap) (int &, int &) = swapNumber;

	int a = 5, b = 10;
	cout << "Before: " << a << " " << b << endl;

	// gọi hàm tường minh
	(*ptrSwap)(a, b);
	cout << "After:  " << a << " " << b << endl;

	// hoặc gọi hàm ngầm định
	ptrSwap(a, b);
	cout << "After:  " << a << " " << b << endl;

	return 0;
}

                
        

Đọc thêm: tại đây

Bài tập rèn luyện

Những bài tập không giải quyết được các bạn ấn vào Trao đổi trên thanh tiêu đề và post lên cho mọi người cùng giải quyết phụ bạn nhé !

Không có bài tập cho slide này !

    Ngôn Ngữ C++
  • Hoàn thành 99% khóa học

Chào mừng các bạn đã đến với website của Trung

Khu vực bên trái là LÝ THUYẾT. Tại đây sẽ gồm một số kiến thức mà Trung đã sưu tầm và chọn lọc trên nhiều trang website các nhau. Đủ tin cậy và chính xác nha.

Khu vực kế tiếp (ở giữa) bao gồm video hướng dẫn cụ thể và phần bài tập để các bạn ôn lại, thực hành lại dựa trên kiến thức của bài đang học.

Khu vực cuối cùng là phần danh sách khóa học. Phần trên cùng là phần Tiêu đê và có thể thu gọn lại (nhấn vào nút ">>" và "<<" sẽ trả lại danh sách khóa học như ban đầu)

Kế dưới là nội dung từng bài học. Các bạn chỉ việc click chọn nội dung để học.

Đối vối điện thoại thì nút mở tab các slide bài học nằm ở dưới thanh tiêu đề, góc trên bên phải màn hình.