[C++STL] 함수 포인터란 ?

박남호·2022년 12월 1일
0

우리가 코드내에서 사용하는 함수도 함수의 시작 주소를 지정하는 함수 포인터가 있다. 함수 포인터는 함수 시그니처와 같게 선언한다. 예를 들어 원 함수가 double func(int a, int b)인 함수의 함수 포인터는 double (*pf)(int,int)와 같이 선언한다. 다음은 함수 포인터의 예제코드이다.

#include <iostream>
using namespace std;
void Print(int n) 
{
	cout << "정수 : " << n << endl;
}
int main()
{
	void(*pt)(int);
	pt = Print;

	Print(10);
	pt(10);
	(*pt)(10);

	cout << endl;
	cout << Print << endl;
	cout << pt << endl;
	cout << *pt << endl;
	return 0;
}

함수 포인터를 pt를 선언하고 Print 함수의 주소를 pt에 대입하면 pt 함수포인터로 Print 함수를 사용할 수 있다. cout << Print << endl; , cout << pt << endl;, cout << pt << endl; 이렇게 3줄은 모두 같은 주소를 출력한다. Print와 pt가 같은 주소를 공유하는건 이해가가지만 pt와 pt가 같은 주소 값을 갖는다는 것은 직관적으로 이해가 가지 않는다. 일단은 pt는 함수 포인터로 Print의 주소를 가지고 있고 값을 담고있는 pt도 Print의 주소를 담고있다고 생각하면 될 것 같다. 따라서 pt와 pt는 같은 문장이다.

profile
NamoPark

0개의 댓글