typedef를 이용한 함수포인터 관련 질문

조회수 954회

안녕하세요.

typedef를 이용한 함수포인터에 대해서 공부할 수 있는데요.

사용 예제를 공부하다보니깐 아래와 같은 소스가 있는데요.

궁금한 부분이, abc 함수의 반환형 자료형은 무엇인가요?

그리고 return (test)NULL; 이 부분은 왜 이렇게 쓰는건가요?

typedef int (*test)(int, char **);


test abc(char *argv)
{
    return (test)NULL;
}

int main(int argc, char **argv)
{
     test b;
     b = abc(argv[1]);
     return 0;
}

1 답변

  • abc()의 반환 형은 함수 포인터 입니다. 좀더 자세히 말하면 반환 형이 int이고 파라미터로 intchar**를 갖는 함수의 주소를 반환합니다.

    return (test)NULL;return NULL;와 동일한 의미 입니다. 캐스팅을 안하나 하나 동일하게 동작합니다.

    작성하신 분이 NULL을 함수 주소로 사용하면 컴파일 오류가 발생할 거라 생각하고 강제 캐스팅을 시도한것 같습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)