Language/C 및 C++
C언어 함수 포인터
innit
2021. 9. 19. 23:45
포인터의 종류
데이터 포인터 : 데이터 세그먼트, 힙 세그먼트, 스택 세그먼트에 있는 '변수의 주소', '메모리의 주소'를 저장
함수 포인터 : 코드 세그먼트에 있는 '명령문의 주소'를 저장
함수 포인터란?
함수 포인터란 특정 함수를 구성하는 시작 명령의 위치를 가리키는 포인터입니다.
예를 들어, 다음과 같은 함수가 있다고 했을 때, ' int result = 0; '이 Sum 함수의 시작 주소가 되는 것입니다.
이 때, 함수 첫 번째 명령문의 주소 값은 함수의 이름 앞에 &를 적음으로써 얻을 수 있습니다.
함수 포인터 선언하기
기존에 데이터 포인터를 선언할 때에는 자신이 가리킬 대상의 크기를 같이 명시해 줬듯이, 함수 포인터를 선언할 때는 자신이 가리킬 함수의 함수 원형을 명시해주어야 합니다.
예를 들어 Sum 함수의 원형은 다음과 같으므로,
Sum 함수를 가르키는 함수 포인터 *p는 다음과 같이 선언해줍니다.
"int형 2개를 매개변수로 받아서 int형을 반환하는 어떤 함수"를 가리키는 포인터 p라고 해석하고, p에는 Sum 함수의 시작 주소를 저장해줍니다.
728x90
반응형