다음의 코드의 결과를 알아맞춰야 하는 문제이다.

답: SoloLearn SoloLearn (배경을 다르게 해보아라.. 보일 것이다)

 

 

틀린 이유는 내가 제대로 함수포인터를 아직 이해하지 못했기 때문이다.

흔히 생각하는 () 연산자를 통해 함수를 호출하는 것을 생각하여 위의 코드에서 

void(*bar)() = foo;

에서

foo() 가 되어야 하는 줄 알았다.

 

이 참에 공부를 좀 해보자.

 

함수포인터(function pointer)란 함수의 주소를 저장하는 변수다.

https://dojang.io/mod/page/view.php?id=592 (코딩도장)에서 아주 깔끔하게 정리되어 있다 

 

따라서, bar에 foo함수를 할당한다. 다음과 같이 말이다.

 

(*bar)(); 이나 bar();이나 같은 표현이기 때문에 foo()는 2번 수행이 된다.

 

문제출처: https://www.sololearn.com/ 中

+ Recent posts