함수 포인터의 원리

function pointers

함수 포인터의 기본적인 선언 방법과 작동원리를 메모리 레이아웃과 함께 살펴보겠다.

일반적인 변수의 주소를 저장하는 포인터와 유사하지만 함수 포인터는 문법이 좀 다르다. 하지만 주소를 저장한다는건 다른게 없다.

Untitled

함수는 이름뿐만 아니라 입력과 반환값의 자료형도 포함하고 있다. 따라서

함수를 가리키는 포인터 변수를 선언할때는 입력이 뭔지, 반환값이 어떤 타입인지도 같이 선언해줘야 한다.

따라서

반환값 타입(포인터 변수명)(입력 타입) = 함수명

이때 함수명에는 &를 붙이지 않는다. 함수 이름 자체가 내부적으로 포인터로 사용되기 때문임.

이런 형식으로 선언된다.

이렇게 선언된 포인터를 통해 함수를 실행시킬 수도 있다.

(*함수 포인터 변수명)(); 형식으로..

다만 위에서 말한것처럼 함수 이름 자체가 포인터처럼 사용되므로, *를 안붙여도 실행된다.

그리고 나온 반환값을 변수에 넣어줄 수도 있음

함수 포인터의 성질을 보자.

text segment가 이번 주요 무대이다.