Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

zyeon's 작심삼일 코딩 공부

함수 포인터 본문

c++ 정리

함수 포인터

젼뀨 2024. 8. 19. 22:13

함수도 메모리의 특정 주소에 저장되며, 이 주소를 함수 포인터에 저장할 수 있다.

return_type (*pointer_name)(parameter_types);

함수 포인터는 형태(반환형, 매개변수)가 맞는 함수의 주소를 받아 올 수 있다.

위와 같은 형태로 선언 해 사용한다.


함수 포인터를 사용하는 이유는 무엇일까?

 

상황이나 조건에 따라 호출하고 싶은 함수를 결정할 수 있기 때문에,

함수 포인터는 콜백 함수로 자주 사용되며, 함수 테이블에서 인덱스에 따라 다양한 함수를 호출하는 경우에도 사용한다.

 

#include <iostream>

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    int (*operation)(int, int);

    operation = &add;
    std::cout << "10 + 5 = " << operation(10, 5) << std::endl;

    operation = subtract; // 다른 함수로 변경, & 연산자 생략 가능
    std::cout << "10 - 5 = " << operation(10, 5) << std::endl;

    return 0;
}

위 코드는 함수 포인터를 사용하는 간단한 예시로,

두 수를 더하고 싶을 땐 add 함수를 연결하고, 빼고 싶을 땐 subtract 함수를 연결해주면 필요에 따른 연산을 해 줄 수 있다.

 

아래와 같이 함수 포인터를 인자로 받아 사용할 수도 있다.

void Operation(int a, int b, int (*func)(int, int)) {
    int result = func(a, b); // 전달된 함수를 호출
    std::cout << "Result: " << result << std::endl;
}

int main() {
    int a = 10;
    int b = 5;

    Operation(a, b, &add); // add 함수를 전달
    Operation(a, b, subtract); // sub 함수를 전달, & 생략 가능

    return 0;
}

 

 

 

 

'c++ 정리' 카테고리의 다른 글

new delete  (0) 2024.08.09
동적할당 malloc()  (0) 2024.07.02
문자 자료형 wchar_t  (0) 2024.06.28
void 포인터  (0) 2024.06.21
const와 포인터  (0) 2024.06.21