
paulo1205
(usa Ubuntu)
Enviado em 15/12/2015 - 22:34h
Em C, uma expressão na forma
(tipo)expr
significa que o resultado da expressão
expr deve ser interpretado como se fosse do tipo de dados
tipo, mesmo que o tipo original de
expr fosse outro.
Esse tipo de operação é chamado
type casting ou
casting (em Português, diz-se
coerção de tipos, mas raríssimas vezes eu ouvi ou vi alguém traduzir os termos em Inglês). Algumas vezes, um
casting provoca realmente uma conversão da representação interna (por exemplo, quando se converte explicitamente um valor de inteiro para ponto flutuante ou vice-versa); noutras vezes não se muda o valor absoluto, mas tão-somente a forma de interpretá-lo. Coerções de ponteiros de um tipo de dados para ponteiros de outro tipo são desse segundo tipo.
Aplicando a forma
(tipo)expr ao trecho de código destacado, o tipo de dados que se deseja obter é
char * (ou seja, um ponteiro para caracteres), e o valor a ser convertido é o resultado da chamada à função
crypt().
Curiosamente, no entanto, essa coerção é totalmente desnecessária, pois a função
crypt() já retorna nativamente um valor que é do tipo ponteiro para caracteres.