Usando nomes de funções como ponteiros de função
O documento de justificativa do C90 fornece informações sobre a escolha de design de igualar nomes de funções com ponteiros de função. Essa conveniência simplifica o uso de ponteiros de função em contextos específicos.
Declarações de função
Considere as declarações:
int f(); int (*pf)();
Chamadas de função
Todas as seguintes chamadas de função expressas válidas:
(&f)(); f(); (*f)(); (**f)(); (***f)(); pf(); (*pf)(); (**pf)(); (***pf)();
A primeira expressão em cada linha foi abordada anteriormente. O segundo é convencional. As expressões subsequentes implicam uma conversão implícita do designador de função em um valor de ponteiro na maioria dos contextos. proibindo-os como esforço excessivo. Assim, a equivalência entre designadores de função e ponteiros de função oferece conveniência no uso de ponteiros.
Conversão implícita
Outra observação interessante é a conversão implícita de tipos de função em ponteiros quando usados como parâmetros, mas não como tipos de retorno:
typedef bool FunctionType(int); void g(FunctionType); // Converte implicitamente para void g(FunctionType *) FunctionTypeh(); // Erro TipoFuncional *j(); // Retorna um ponteiro de função com o tipo bool(int)
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3