디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

피로횽님 함수 포인터 강좌에 사족달기

유리한갤로그로 이동합니다. 2009.07.29 13:43:47
조회 150 추천 0 댓글 8



함수포인터 사용 예를 들겠스빈다.

함수 인자로 함수를 넘겨 줄 수 있습니다. (정확히는 함수의 시작주소를 넘겨줌)
http://codepad.org/yawaDRbI


void fooA(void){ printf("함수 A\\n"); }
void fooB(void){ printf("함수 B\\n"); }
void fooC(void){ printf("함수 C\\n"); }

void foo(void (*fp)(void)){ fp(); }

int main(void)
{
        foo(fooA);
        foo(fooB);
        foo(fooC);
        return 0;
}

유의해야 할 점은 리턴타입 / 매개변수 타입을 맞춰주어야 한다는 것이빈다.

이런식으로 사용이 가능하다는 얘기죠.
http://codepad.org/DCWCESFP

int plus(int a,int b){ return a+b; }
int minus(int a,int b){ return a-b; }

int foo(int a,int b,int (*fp)(int,int)){ return fp(a,b); }

int main(void)
{
        printf("%d\\n",foo(15, 10, plus));
        printf("%d\\n",foo(15, 10, minus));
        return 0;
}


물론 함수포인터도 배열로 생성 가능하니, 배열 인덱스에 따라서 switch 그딴거 없이 상황에 맞게 호출 할 수도 있습니다.
http://codepad.org/EAqooPCT

int plus(int a,int b){ return a+b; }
int minus(int a,int b){ return a-b; }

int foo(int a,int b,int (*fp)(int,int)){ return fp(a,b); }

int main(void)
{
        int i;
        int (*fp[2])(int,int)={plus,minus};
//        fp[0]=plus;        fp[1]=minus;
        for(i=0;i<2;i++)
                printf("%d\\n",foo(15, 10, fp[i]));
        
        return 0;
}

아니면 일정 상황이 되었을때 해당 함수를 호출해 주는 형태로도 가능합니다.
http://codepad.org/LG9H0NDU


static int (*g_fp)(int,int);

int plus(int a,int b){ return a+b; }
int minus(int a,int b){ return a-b; }

void SetFp(int (*fp)(int,int)){ g_fp=fp; }

int foo(int a,int b){ return g_fp(a,b); }

int main(void)
{
        SetFp(plus);
        printf("%d\\n",foo(15, 10));

        SetFp(minus);
        printf("%d\\n",foo(15, 10));

        return 0;
}

마지막껀 CallBack을 설명하려고 했는데 좀 이상함. 젠장.

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 힘들게 성공한 만큼 절대 논란 안 만들 것 같은 스타는? 운영자 24/06/10 - -
이슈 [디시人터뷰] 웃는 모습이 예쁜 누나, 아나운서 김나정 운영자 24/06/11 - -
153317 nhn nhn 9급 9급하니깐 우스워보이냐? [3] jujubar9갤로그로 이동합니다. 09.10.20 161 0
153315 NHN VS NCSOFT [5] 노노(125.141) 09.10.20 139 0
153314 7급 전산직 vs NHN 형들의 선택은? [4] curiosity(221.153) 09.10.20 232 0
153313 학교 수업교제 왜케 후진것들만 써?? [4] ddd(118.223) 09.10.20 86 0
153312 컴퓨터 사용시간.. C# 프로그래밍 중인데;; [7] tls(123.142) 09.10.20 111 0
153311 저,이과3학년인데요.정보보호학 대학좀ㅠㅠ [8] ㅠㅠㅠㅠ(118.47) 09.10.20 75 0
153310 코딩하면서 주로 먹는 간식은? [14] 에릭슈미트갤로그로 이동합니다. 09.10.20 101 0
153308 근데말야 [8] 에릭슈미트갤로그로 이동합니다. 09.10.20 58 0
153303 정말... 영어.... [3] 눈팅족(115.143) 09.10.20 141 0
153301 니들이 왜 여자친구가 없는줄아냐 [3] ㅁㅁ(222.235) 09.10.20 119 0
153300 주석을 달지않아 해석하기 귀찮아진 코드1 [5] IHF갤로그로 이동합니다. 09.10.20 119 0
153299 도와주세요... ㅜ [9] 모르겠다...(118.44) 09.10.20 159 0
153298 변수명.. [17] 혼아갤로그로 이동합니다. 09.10.20 139 0
153297 malloc 함수 관련 질문입니다 [23] 유동니커(218.51) 09.10.20 179 0
153296 그만 잉여짓하고 공부 좀 해야지 DMW(220.68) 09.10.20 75 0
153295 MS는 버전업만하면서 돈처먹나 [6] CP(118.221) 09.10.20 121 0
153294 싸인 인증 [5] 유리한갤로그로 이동합니다. 09.10.20 159 0
153293 C언어 해보려고 열혈강의 C프로그래밍 책샀는데 [21] ㅁㄷ(119.71) 09.10.20 285 0
153291 1분 1초가 소중한 이유 (동영상) [5] 숙신갤로그로 이동합니다. 09.10.20 153 0
153290 lllllllll 님은 봅니다(2) [5] 숙신갤로그로 이동합니다. 09.10.20 78 0
153289 Visual Studio에서 Replace 많이 써? 횽아들? [11] 물속의다이아갤로그로 이동합니다. 09.10.20 2496 0
153288 뇌를 자극하는 문제 [6] 샷?(164.125) 09.10.20 114 0
153287 유리한 형!!!! [9] 숙신갤로그로 이동합니다. 09.10.20 130 0
153286 고객하고 어느 정도까지 싸워 본 적 있어? [31] 물속의다이아갤로그로 이동합니다. 09.10.20 294 0
153285 개쉛기!!! IHF갤로그로 이동합니다. 09.10.20 75 0
153283 사실 난 20살이다 [5] 은행강도갤로그로 이동합니다. 09.10.20 144 0
153282 강혜정, 저결혼해요~ [1] Vita500갤로그로 이동합니다. 09.10.20 128 0
153281 아,,, 암울하다 [8] Rei@디씨갤로그로 이동합니다. 09.10.20 163 0
153280 개짜증나는 고객보다 더 미운건... [4] 물속의다이아갤로그로 이동합니다. 09.10.20 178 0
153279 뭐 다들 관심 없겠지만.. [7] rntjr갤로그로 이동합니다. 09.10.20 151 0
153278 횽들도 디씨질 그만하고 씬입횽처럼 생산적인 일을좀 하세영. [1] 컴공볍진갤로그로 이동합니다. 09.10.20 117 0
153277 나 이런사람이야 [3] 유리한갤로그로 이동합니다. 09.10.20 108 0
153275 대체 붙여넣기는 대체 왜 대체 붙여넣기라고 지은거죠? [3] 아잉따잉갤로그로 이동합니다. 09.10.20 73 0
153273 정보처리기사 따면 존나여??? [8] 노소프소갤로그로 이동합니다. 09.10.20 183 0
153272 도움 부탁드려요 [JAVA] Jtextarea 에 관해서 입니다. [12] 프갤_만세(211.55) 09.10.20 153 0
153271 아 씨발 IBM [5] LightEach갤로그로 이동합니다. 09.10.20 159 0
153270 아래 매칭사이트 뭔가 신빙성이 있어보여 IHF갤로그로 이동합니다. 09.10.20 71 0
153269 비쥬얼베이직 문제요. [6] dsfsdfsdfsdf갤로그로 이동합니다. 09.10.20 106 0
153268 법사들아 여기서 이상형을 찾아보자. [9] rntjr갤로그로 이동합니다. 09.10.20 248 0
153267 자기 전 12 Angry Men algo갤로그로 이동합니다. 09.10.20 54 0
153266 형들 unary expression이 대체뭔가요?? [1] ㅎㅎ(220.117) 09.10.20 101 0
153265 IHF 횽은 봅니다. [2] 물속의다이아갤로그로 이동합니다. 09.10.20 68 0
153264 mysql 에서 만들어놓은 테이블에 스키마 추가할수있나요? [7] 피자맛우유12(210.110) 09.10.20 82 0
153262 회사는 낮잠을 보장하라 [1] 고추장불고기갤로그로 이동합니다. 09.10.20 99 0
153261 ! 여러분 꼭 읽어주세요. [17] IHF갤로그로 이동합니다. 09.10.20 202 0
153260 프갤에 뭔가 쓰고싶은데.. [6] IHF갤로그로 이동합니다. 09.10.20 149 0
153259 프로그래머 길을 떠날듯 합니다. [7] 프레야갤로그로 이동합니다. 09.10.20 207 0
153258 교수가 추천해준 회사들 [2] 학생(125.128) 09.10.20 189 0
153257 lllllllll 님은 봅니다. [1] 숙신갤로그로 이동합니다. 09.10.20 102 0
153256 흉님들 정수를 뒤에 두자리빼고 비교하는 방법좀 알려주세요. [14] EEE(118.131) 09.10.20 146 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2