Thắc mắc về đối số trong hàm

Chào các bác,
Các bác cho em hỏi

void traverse_NLR(void f(node<T> *, void *), void *params = 0)

Hàm này nghĩa là sao ạ? Và truyền vào là cái gì ạ? Em cảm ơn

Là hàm mà nhận vào một đối số là địa chỉ của một hàm khác.

Một ví dụ khá ngớ ngẩn và không có nghĩa gì:

#include <iostream>

void sher(void f(int), void *p = 0) {
    f(p ? *(int*)p : 0);
}

void f1(int a) {
    std::cout << "print value of a using f1 function: " << a << '\n';
}

void f2(int a) {
    std::cout << "print value of a using f2 function: " << a << '\n';
}

int main() {
    int a = 10;
    sher(f1, &a);
    sher(f2, &a);
    return 0;
}

Out:

print value of a using f1 function: 10
print value of a using f2 function: 10
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?