개인 공부/c++

Function pointer

Sanyo 2024. 6. 11. 16:46
#include <iostream>

// 함수 정의
int add(int a, int b) {
    return a + b;
}

int multiply(int a, int b) {
    return a * b;
}

int main() {
    // 함수 포인터 선언 및 초기화
    int (*operation)(int, int);

    // add 함수의 주소를 함수 포인터에 할당
    operation = add;
    std::cout << "Addition: " << operation(5, 3) << std::endl; // 출력: Addition: 8

    // multiply 함수의 주소를 함수 포인터에 할당
    operation = multiply;
    std::cout << "Multiplication: " << operation(5, 3) << std::endl; // 출력: Multiplication: 15

    return 0;
}

 

다음과 같이 함수 포인터를 설정할 수 있다. 다음은 함수 포인터 배열.

 

#include <iostream>

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

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

int multiply(int a, int b) {
    return a * b;
}

int divide(int a, int b) {
    return a / b;
}

int main() {
    // 함수 포인터 배열 선언 및 초기화
    int (*operations[4])(int, int) = { add, subtract, multiply, divide };

    int a = 10, b = 2;

    for(int i = 0; i < 4; ++i) {
        std::cout << "Result: " << operations[i](a, b) << std::endl;
    }

    return 0;
}

 

 

Lambda function

[capture](parameters) -> return_type {
    // 함수 본문
    return expression;
}

 

기본 문법은 다음과 같다.

 

  • capture: 외부 변수의 값을 람다 함수 내에서 사용할 때 사용합니다. 람다 함수가 외부 범위에 있는 변수를 참조할 때 사용됩니다.
  • parameters: 람다 함수의 매개변수입니다.
  • return_type: 람다 함수의 반환 타입입니다. 생략 가능합니다.
  • {} 안에는 람다 함수의 본문이 위치합니다.

간단한 람다 함수

#include <iostream>

int main() {
    // 람다 함수 정의와 호출
    auto lambda = []() {
        std::cout << "Hello, Lambda!" << std::endl;
    };

    lambda(); // 출력: Hello, Lambda!

    return 0;
}

 

 

외부 변수를 사용

#include <iostream>

int main() {
    int x = 10;
    int y = 20;

    // 람다 함수 정의와 호출
    auto lambda = [x, y]() {
        std::cout << "Sum: " << x + y << std::endl;
    };

    lambda(); // 출력: Sum: 30

    return 0;
}

 

매개변수 사용

#include <iostream>

int main() {
    // 람다 함수 정의와 호출
    auto lambda = [](int a, int b) {
        std::cout << "Sum: " << a + b << std::endl;
    };

    lambda(10, 20); // 출력: Sum: 30

    return 0;
}