티스토리 뷰

C

함수 포인터

NationCore 2019. 3. 6. 23:48


void(*pf) (int *result, int value_1, int value_2); // 함수 포인터 설정



void add(int *result, int value_1, int value_2)

{

*result = value_1 + value_2;

}


void subtract(int *result, int value_1, int value_2)

{

*result = value_1 - value_2;

}


void main(void)

{

int z;

printf("value 1: 20 value 2: 30 기준으로 계산 \n\n");

pf = add;                                // 포인터 함수에 add 함수 주소 저장

pf(&z, 20, 30);

printf("add 함수 결과값 : %d\n\n", z);

pf = subtract;                           // 포인터 함수에 subtract 함수 주소 저장

pf(&z, 20, 30);

printf("subtract 함수 결과값 : %d\n\n", z);

}




결과 : 






함수 포인터 배열인 경우


void add(double *result, double value_1, double value_2)

{

*result = value_1 + value_2;

}


void subtract(double *result, double value_1, double value_2)

{

*result = value_1 - value_2;

}


void muti(double *result, double value_1, double value_2)

{

*result = value_1 * value_2;

}


void divide(double *result, double value_1, double value_2)

{

*result = value_1 / value_2;

}


void(*pf[4]) (double *, double, double) = { add,subtract,muti,divide };


void main(void)

{

double z;

printf("value 1: 20 value 2: 30     기준으로 계산 \n\n");

for (int i = 0; i < 4; i++) {

pf[i](&z, 20, 30);

printf("함수 결과값 : %f\n\n", z);

}

}






'C' 카테고리의 다른 글

구조체 포인터  (0) 2019.03.06
구조체  (0) 2019.03.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
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
글 보관함