함수 포인터 질문 드립니다.
조회수 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를 이용해서 자료형으로 선언한 것입니다.이것은 보통 특정 함수의 매개변수로 함수 포인터를 넘겨주고 그것을 그 함수의 임시(지역변수같은) 함수로 받아 사용할 때 사용합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력