함수포인터
2009.11.12 07:27
함수포인터 |
|
[�렪吏�]
설명 #
"함수포인터"는 C언어에서 자주 쓰이는 기본 용법중 하나입니다. 정의는 다음과 같습니다.
선언된 함수가 저장된 메모리 번지값을 담고 있는 포인터 변수하지만 이것을 왜 보통의 포인터와는 달리 특별취급하냐면 다음과 같은 이유 때문입니다.
- 일반 포인터 변수와는 조금 다르게 보이는 문법으로 선언됩니다. 예를 들어 함수 포인터 변수는 다음과 같이 선언합니다. (functionPtr이 포인터 변수명이 됩니다)
void (*functionPtr)(const char *s_)
- 함수포인터는 실행부분을 가리키는 포인터 변수인탓에 () 연산자를 사용할 수 있습니다. 즉, 위의 functionPtr은 아래와 같이 실행가능합니다.
functionPtr("바보나라~")
[�렪吏�]
예제 #
아래 예제는 함수포인터를 활용한 간단한 예제입니다.
#include <stdio.h>
void testout1(const char *s) {
printf("시험출력1:%s\n", s);
}
void testout2(const char *s) {
printf("시험출력2:%s\n", s);
}
// 함수포인터 변수
void (*funcPtr)(const char *s);
int main() {
// 함수포인터를 testout1, testout2로 각각 대입해보고 실행해본다.
funcPtr = testout1;
funcPtr("테스트");
funcPtr = testout2;
funcPtr("테스트");
}
실행결과는 아래와 같습니다.
시험출력1:테스트 시험출력2:테스트main()안에서는 funcPtr만 실행했지만 마치 testout1, testout2를 각각 실행한 것과 같은 효과가 있음을 알 수 있습니다.
[�렪吏�]
typedef 거는 법 #
함수포인터를 어떤 포인터 변수로서 활용하고 싶을 때 typedef를 활용하면 매우 편리합니다. 실제로 win32 API에서는 윈도우 프로시저 함수포인터형으로 WNDPROC라는 타입이 있습니다. (이부분을 보면 어느정도 사용법에 대한 느낌이 올겁니다) winuser.h 헤더화일에서 검색해보면 다음과 같이 선언되어있습니다.
typedef LRESULT(CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
실제로 사용될 때에는 다음과 같이 사용됩니다.
LRESULT CALLBACK winproc1(HWND,UINT,WPARAM,LPARAM) { };
...
WNDPROC winprocPtr = winproc1;
...
꽤 유용한 문법이니 알아두시면 좋습니다. 본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 17 |
[알아봅시다] 원자로의 미래는 작을 수 있다”...전 세계가 뛰어든 SMR은 무엇
| 졸리운_곰 | 2023.01.22 | 247 |
| 16 |
[알아봅시다][물리학][시공간] [사이언스N사피엔스]시간과 공간이 아닌 시공간
| 졸리운_곰 | 2021.04.01 | 212 |
| 15 |
"우주 나이는 137억7천만년±4천만년"…허블상수 논쟁 해결 난망
| 졸리운_곰 | 2020.07.17 | 253 |
| 14 |
태양 표면 작은 폭발까지 드러낸 최근접 태양 이미지들
| 졸리운_곰 | 2020.07.17 | 302 |
| 13 |
[사이언스&사피엔스] 전자기학의 완성
| 졸리운_곰 | 2020.07.12 | 340 |
| 12 |
우주 생명체 '씨앗' 탄소 뿌리고 스러지는 백색왜성
| 졸리운_곰 | 2020.07.09 | 285 |
| 11 |
태양계 무게중심 100m 이내로 오차 줄여 블랙홀 연구 도약
| 졸리운_곰 | 2020.07.08 | 200 |
| 10 |
[잠깐과학]'우주배경복사' 발견하다
| 졸리운_곰 | 2020.07.06 | 300 |
| 9 |
초소형 블랙홀인가 초대형 중성자별인가...중력파로 발견한 미지의 천체
| 졸리운_곰 | 2020.06.30 | 183 |
| 8 |
[사이언스N사피엔스] 열역학과 엔트로피
| 졸리운_곰 | 2020.06.28 | 402 |
| 7 |
목성 위성 유로파 얼음층 밑 대양 "생명체가 꽤 서식할만한 곳"
| 졸리운_곰 | 2020.06.27 | 182 |
| 6 |
'무거운 중성자별일까 가벼운 블랙홀일까' 중력파로 미지의 천체 찾았다
| 졸리운_곰 | 2020.06.27 | 235 |
| 5 |
'1조분의 1초'만에 원자가 분자로 바뀌는 전 과정 세계 최초 포착
| 졸리운_곰 | 2020.06.27 | 346 |
| 4 |
[프리미엄리포트] ‘핵’ 빠르게 던지는 가속기
| 졸리운_곰 | 2020.06.27 | 174 |
| 3 |
"우주는 훌륭한 양자역학실험실…ISS서 BEC실험 첫 성공"
| 졸리운_곰 | 2020.06.15 | 172 |
| 2 |
우주 미스터리 풀어줄 157일 주기 '빠른 전파 폭발' 확인
| 졸리운_곰 | 2020.06.14 | 246 |
| 1 | 알파 센타우리 | 졸리운_곰 | 2019.01.23 | 511 |

