안녕하세요 넬다이입니다.
오늘은 함수 포인터를 배워보도록 할 텐데요
포인터를 지나온 여러분들이라면은 쉽게 이해가 가실 것이라고 생각하며 다들 파이팅입니다 ㅎ
함수 포인터
함수 포인터는 특정 함수에 대한 메모리 주소를 담을 수 있는 것이다.
함수 또한 메모리 주소를 가지고 있으며 그 함수에 해당하는 기계어 코드가 저장된 메모리 블록의 시작 주소입니다.
장점은 재사용성이 극대화되는 점이 있습니다.
int Sum(int iA, int iB)
{
return iA + iB;
}
이런 Sum을 해주는 함수가 있는데요 이를 함수 포인터로 담아서 사용을 해보도록 하겠습니다.
#include <iostream>
using namespace std;
int Sum(int iA, int iB);
void main(void)
{
//함수 포인터를 사용하게 되면 호출 방법이 쪼금 다른데..
//함수 포인터의 선언
int (*SumPtr)(int, int);
SumPtr = Sum;
//2가지의 방법이 있다.
cout << (*SumPtr)(10, 20) << endl;
cout << SumPtr(20, 30) << endl;
}
int Sum(int iA, int iB)
{
return iA + iB;
}
이처럼 보면은 포인터는 변수만 담는 것이 아니라 주소를 담는 곳이기 때문에
함수 또한 주소이며 그 주소를 담을 수 있는 함수 포인터가 존재합니다 재사용성이 높기 때문에 자주 사용되고 있습니다.
지금은 이 부분을 잘 사용을 하지 않을지도 모르지만 후에는 이 함수 포인터를 통해서 구현을 하는 경우가 은근히 많으므로 잘 익혀두면 좋습니다.
팁.
C랑 C++에서는 하나의 함수 내에서 다른 함수를 정의할 수 없게 되어 있습니다.
프로그램이 실행되다가 함수를 메모리 공간에 올릴 수가 없기 때문에,
기본적으로 함수는 외부 링크라는 것을 갖고 있습니다.
이를통해서 알 수 있는점이 프로그램이 켜져 있는 동안 여러 파일이 함수를 공유할 수 있다는 뜻입니다.
오늘은 조금 간단하게 끝난 감이 없잖아 있는데요 조금 쉬어가는 타이밍이라고 생각하시면 편할 것 같습니다.
그럼 다음 정리시간에 뵙도록 하겠습니다 ㅎ
[개발/C&C++] - (C/C++ 속성 정리) 20일 차 : 레퍼런스 변수의 사용
[개발/C&C++] - (C/C++ 속성 정리) 19일 차 : 재귀 함수 및 2차원 배열
[개발/C&C++] - (C/C++ 속성 정리) 18일 차 : 리스트를 이용해서 성적표 만들기 및 설계
[개발/C&C++] - (C/C++ 속성 정리) 17일 차 : 성적표 만들기 및 설계
'개발 > C&C++' 카테고리의 다른 글
(C/C++ 속성 정리) 25일 차 : Const 한정자란? (0) | 2020.07.21 |
---|---|
(C/C++ 속성 정리) 24일 차 : 객체지향 프로그래밍이란? (0) | 2020.07.20 |
(C/C++ 속성 정리) 23일 차 : 분활컴파일 및 (0) | 2020.07.14 |
(C/C++ 속성 정리) 22일 차 : 함수포인터를 이용한 사칙연산 계산기 만들기 (0) | 2020.07.13 |
(C/C++ 속성 정리) 20일 차 : 레퍼런스 변수의 사용 (0) | 2020.07.11 |
(C/C++ 속성 정리) 19일 차 : 재귀 함수 및 2차원 배열 (3) | 2020.07.10 |
(C/C++ 속성 정리) 18일 차 : 리스트를 이용해서 성적표 만들기 및 설계 (0) | 2020.07.08 |
(C/C++ 속성 정리) 17일 차 : 성적표 만들기 및 설계 (0) | 2020.07.07 |