함수 포인터는 응용프로그램에서 많이 사용되는데 함수 포인터 배열의 선언 형식을 보도록 하자
반환자료형 (*배열이름 [배열크기])(인수리스트)
다음 사칙연산을 계산하는 함수를 위한 포인터 배열을 가정할 때, 다음과 같은 배열을 선언할 수 있다.
int (*handle[4])(int, int)
이때 배열의 각 원소는 함수의 시작주소를 가진다.
다음의 예제로 함수 초인터 배열의 사용을 알아보자.
반환자료형 (*배열이름 [배열크기])(인수리스트)
다음 사칙연산을 계산하는 함수를 위한 포인터 배열을 가정할 때, 다음과 같은 배열을 선언할 수 있다.
int (*handle[4])(int, int)
이때 배열의 각 원소는 함수의 시작주소를 가진다.
다음의 예제로 함수 초인터 배열의 사용을 알아보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| #include<stdio.h> int get_operator(); int plus( int , int ); int minus( int , int ); int multiply( int , int ); int divide( int , int ); int get_operator() { int choice; while (1) { printf ( "=======================n" ); printf ( "0 : for plusn" ); printf ( "1 : for minusn" ); printf ( "2 : for multiplyn" ); printf ( "3 : for dividen" ); printf ( "4 : for quitn" ); printf ( "=======================n" ); printf ( "Please Enter operator: " ); scanf ( "%d" , &choice); if ((choice >= 0) && (choice <=4)) { return (choice); } else { printf ( "Wrong Input, enter again!n" ); } } return 0; } int main() { int op; int num1, num2; int result; int (*hanlde[4]) ( int , int ) = {plus, minus, multiply, divide} while (1) { op = get_operator(); if (op == 4) { printf ( "This is the end of program!n" ); return 0; } printf ( "Enter the first operand : " ); scanf ( "%d" , &num1); printf ( "Enter the second operand :" ); scanf ( "%d" , &num2); result = hanlde[op] (num1, num2); printf ( "nthe result of operation is %dnn" , result); } return 0; } | int plus( int n1, int n2) { return (n1+n2); } int minus( int n1, int n2) { return (n1-n2); } int multiply( int n1, int n2) { return (n1*n2); } int divide( int n1, int n2) { return (n1/n2); } |
<프로그램 설명>
int (*handle[4]) (int, int) = { plus, minus, multiply, divide};
4 개의 원소를 가진 함수 포인터의 배열을 선언하고, 초기화 하는 부분이다.
result = handle[op] (num1, num2);
해당 하는 함수를 호출하는 부분이다.
함수 포인터는 임베디드 시스템에서 인터럽트 처리 테이블처럼 이벤트 처리 때 처럼, 상황에 따라 호출하는 함수가 다를 경우 유용하게 사용된다.
댓글 없음:
댓글 쓰기