4. 함수포인터

19
C언어와 포인터 (4) 함수 포인터 "완전학습을 지향하는" NHN NEXT 정호영 나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.

Upload: hoyoung-jung

Post on 07-Jul-2015

373 views

Category:

Engineering


2 download

DESCRIPTION

함수 포인터의 사용법

TRANSCRIPT

Page 1: 4. 함수포인터

C언어와포인터 (4)

함수포인터

"완전학습을지향하는" NHN NEXT 정호영

나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.

Page 2: 4. 함수포인터

오늘의토픽

- 간단하게함수포인터에대해배워보자.

Page 3: 4. 함수포인터

함수의구성요소

1. 입력 - parameter

2. 함수이름 - foo

3. 출력 - return

int foo(int n, double x) { … return 1; }

Page 4: 4. 함수포인터

함수를구별할 수 있게하는 요소들

1. parameter 의개수, 각각의타입

2. 함수이름 foo = 함수의 코드(인스트럭션)가저장된주소

3. return 타입

int foo(char, double)

Page 5: 4. 함수포인터

함수이름

1. 함수의코드(인스트럭션)가저장된 주소

2. 아마도코드 영역(읽기전용) 일것이다.

3. 생각해보니포인터랑비슷한것같다.

int foo(char, double)

Page 6: 4. 함수포인터

함수이름 = 주소인지확인해보자.

https://gist.github.com/honux77/c44182cdf8e777dc2d38

Page 7: 4. 함수포인터

결과

== Result (VS2013, win7) ==address of foo = 002A10F0address of main = 002A1140address of literal = 002A5878address of global = 002A801Cpointer value in stack = 0046F90Caddress of x = 0046F928pointer value in heap = 0083E2B0계속하려면 아무 키나 누르십시오 . . .

Page 8: 4. 함수포인터

함수이름 = 주소 = 포인터

그럼 포인터변수에함수이름을넣을 수도 있겠네요.

네~ 됩니다.

Page 9: 4. 함수포인터

포인터변수에 함수이름을넣으려면

함수를 구별할 수 있는 형식이어야 할 것 같습니다.

Page 10: 4. 함수포인터

함수를 포인터로 대입하려면 필요한 것들

1. parameter의개수, 타입

2. 함수 코드가 들어있는 곳 주소 (=이름)

3. 리턴 타입

Page 11: 4. 함수포인터

함수의 포인터

1. parameter - double, int

2. 함수의주소 - (*ptr) 에저장

3. 리턴타입 - int

return_type (*function)(arg1, arg2, ...);int (*ptr)(double, int)

Page 12: 4. 함수포인터

https://gist.github.com/honux77/ef2476764669218e5af4

Page 13: 4. 함수포인터

함수 포인터의용도

여러 가지가 있는데 각자 공부합시다.

한 가지만 알아봅니다.

Page 14: 4. 함수포인터

qsort 함수 사용 예제

함수 포인터가 들어있습니다.

저 타입에 맞는 함수를 만들어 봅시다.

Page 15: 4. 함수포인터

https://gist.github.com/honux77/25c55f2264b29568aac7

Page 16: 4. 함수포인터

주의! 헷갈리지말아야 할 것들

?!

int (*ptr)(int);

int *ptr[4];

int (*ptr)[4];

Page 17: 4. 함수포인터

주의! 헷갈리지말아야 할 것들

?!

//int를 parameter로 받고 int를 리턴하는 함수 포인터int (*ptr)(int);

//int 포인터가 4개 있는 int 포인터 배열int *ptr[4];

// 4개짜리 1차원 int 배열의 포인터// 2차원 배열에 대응int (*ptr)[4];

Page 18: 4. 함수포인터
Page 19: 4. 함수포인터

Thank You