다음의 코드의 결과를 알아맞춰야 하는 문제이다.
답: SoloLearn SoloLearn (배경을 다르게 해보아라.. 보일 것이다)
틀린 이유는 내가 제대로 함수포인터를 아직 이해하지 못했기 때문이다.
흔히 생각하는 () 연산자를 통해 함수를 호출하는 것을 생각하여 위의 코드에서
void(*bar)() = foo;
에서
foo() 가 되어야 하는 줄 알았다.
이 참에 공부를 좀 해보자.
함수포인터(function pointer)란 함수의 주소를 저장하는 변수다.
따라서, bar에 foo함수를 할당한다. 다음과 같이 말이다.
(*bar)(); 이나 bar();이나 같은 표현이기 때문에 foo()는 2번 수행이 된다.
문제출처: https://www.sololearn.com/ 中
'코딩 문제풀이 및 연습 > SoloLearn' 카테고리의 다른 글
[구조체와 포인터]What is the output of this code? (0) | 2020.08.23 |
---|---|
SoloLearn을 통해 틈틈히 공부하기 (0) | 2020.08.18 |