함수 이름을 함수 포인터로 사용
C90의 근거 문서는 함수 이름을 함수 포인터와 동일시하는 설계 선택에 대한 통찰력을 제공합니다. 이러한 편리함은 특정 컨텍스트에서 함수 포인터 사용을 단순화합니다.
함수 선언
선언을 고려하세요:
int f(); int (*pf)();
함수 호출
다음은 모두 유효한 함수 호출을 나타냅니다.
(&f)(); f(); (*f)(); (**f)(); (***f)(); pf(); (*pf)(); (**pf)(); (***pf)();
각 줄의 첫 번째 표현은 이전에 다루었습니다. 두 번째는 기존 방식입니다. 후속 표현식은 대부분의 상황에서 함수 지정자를 포인터 값으로 암묵적으로 변환함을 의미합니다.
설계 근거
위원회는 이러한 형식을 허용하는 데 큰 단점이 없다고 보고 검토했습니다. 과도한 노력으로 금지합니다. 따라서 함수 지정자와 함수 포인터 간의 동등성은 포인터 사용에 편리함을 제공합니다.
암시적 변환
또 다른 흥미로운 관찰은 사용될 때 함수 유형이 포인터로 암시적으로 변환된다는 점입니다. 매개변수로 사용되지만 반환 유형으로는 사용하지 않음:
typedef bool FunctionType(int); void g(FunctionType); // Implicitly converts to void g(FunctionType *) FunctionType h(); // Error FunctionType *j(); // Returns a function pointer with the type bool(int)유형의 함수 포인터를 반환합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3