• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

함수 포인터 check_fnc에 관해 질문이 있습니다.

23.01.06 18:58 작성 조회수 280

0

#include <iostream>

#include <array>

using namespace std;

bool isEven(const int& number)

{

if (number % 2 == 0) return true;

else return false;

}

bool isOdd(const int& number)

{

if (number % 2 != 0) return true;

else return false;

}

void printNumbers(const array<int, 10>& my_array, bool (*check_fnc)(const int&)=isEven)

{

for (auto element : my_array)

{

if (check_fnc(element) == true) cout << element << " ";

}

cout << endl;

}

int main()

{

std::array<int, 10> my_array = { 0,1,2,3,4,5,6,7,8,9 };

printNumbers(my_array);

printNumbers(my_array, isOdd);

return 0;

}

에서 if (check_fnc(element) == true)부분인데요, check_fnc가 함수 포인터고 이것이 함수의 주소를 저장하니까 isEven으로 기본값을 설정하면, 포인터가 isEven으로 찾아가서 함수를 호출하는 것이 맞나요?

그리고 printNumbers(my_array, isOdd)부분에서는 check_fnc가 isOdd의 주소를 저장했으니까

if (check_fnc(element) == true)의 check_fnc가 isOdd를 호출하는 것도 맞나요??

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2023.01.07

네, 그렇습니다 :)