함수 포인터 질문 드립니다.

조회수 717회

함수 포인터를 간단하게 사용하기 위해 typedef나 using을 사용할 수 있다고 알고 있습니다.

typedef void func1(int, int);
typedef void (&func2)(int, int);
typedef void (*func3)(int, int);

그런데 위 3개의 차이점이 궁금합니다. 일반적으로는 세번째 표현을 많이 사용하는 듯 한데 구체적으로는 어떤 차이가 있나요?

1 답변

  • typedef void (*func3)(int, int);는 C언어부터 있던 기능으로 함수 포인터를 typedef를 이용해서 자료형으로 선언한 것입니다.

    이것은 포인터의 성질을 갖기 때문에 단독으로 변수만 먼저 선언한 후에 함수의 주소를 추후에 넣을수도 있고, 선언과 동시에 초기화도 가능합니다.

    typedef void (&func2)(int, int);는 C++언어에서 사용되는 것으로(참조 연산자는 C++부터 생김) 함수 참조를 typedef를 이용해서 자료형으로 선언한 것입니다.

    이것은 참조의 성질을 갖기 때문에 단독으로 변수(넣고자 하는 함수의 별명)를 선언할 수 없고, 반드시 변수 선언과 동시에 초기화해주어야 합니다.

    typedef void func1(int, int);는 C언어부터 있던 기능으로 함수 프로토 타입을 typedef를 이용해서 자료형으로 선언한 것입니다.

    이것은 보통 특정 함수의 매개변수로 함수 포인터를 넘겨주고 그것을 그 함수의 임시(지역변수같은) 함수로 받아 사용할 때 사용합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)