Tipo de retorno
O tipo de retorno de uma função estabelece o tamanho e tipo do valor retornado pela função e corresponde ao especificador de tipo na sintaxe abaixo:
Sintaxe
definição de função:
especificadores de declaração optseq do atributo optDeclarador declaração-list optdeclaração de compostos/ * atributo-seq é específico do Microsoft * /
especificadores de declaração:
especificadores de declaração de especificador de classe de armazenamento optespecificadores de declaração de especificador de tipo opt
especificadores de declaração de qualificador de tipo opt
especificador de tipo:
Voidchar
short
int
long
float
double
assinado
não assinado
especificador de struct ou união
especificador de enum
nome de TypeDef
O especificador de tipo pode especificar qualquer fundamentais, estrutura ou tipo de união.Se você não incluir especificador de tipo, o tipo de retorno int será adotada.
O tipo de retorno fornecido na definição de função deve corresponder ao tipo de retorno em declarações da função em outro lugar no programa.Uma função retorna um valor quando um return contendo uma expressão de instrução é executada.A expressão é avaliada, convertido para o tipo de valor de retorno, se necessário e retornado para o ponto em que a função foi chamada.Se uma função for declarada com tipo de retorno void, uma instrução return contendo uma expressão gera um aviso e a expressão não é avaliada.
Os exemplos a seguir ilustram os valores de retorno da função.
typedef struct
{
char name[20];
int id;
long class;
} STUDENT;
/* Return type is STUDENT: */
STUDENT sortstu( STUDENT a, STUDENT b )
{
return ( (a.id < b.id) ? a : b );
}
Este exemplo define o STUDENT digite com um typedef declaração e define a função sortstu ter STUDENT tipo de retorno.A função seleciona e retorna um dos seus argumentos de estrutura de dois.Em chamadas subseqüentes para a função, o compilador verifica para certificar-se de que os tipos de argumento são STUDENT.
Observação |
---|
Seria melhor eficiência, passando de ponteiros para a estrutura, em vez de toda a estrutura. |
char *smallstr( char s1[], char s2[] )
{
int i;
i = 0;
while ( s1[i] != '\0' && s2[i] != '\0' )
i++;
if ( s1[i] == '\0' )
return ( s1 );
else
return ( s2 );
}
Este exemplo define uma função retornar um ponteiro para uma matriz de caracteres.A função leva dois conjuntos de caracteres (seqüências) como argumentos e retorna um ponteiro para a menor das duas seqüências de caracteres.Um ponteiro para uma matriz aponta para o primeiro os elementos da matriz e tem seu tipo; Assim, o tipo de retorno da função é um ponteiro para digitar char.
Você não precisa declarar funções com int tipo de retorno antes de chamá-los, embora protótipos são recomendados para que o tipo correto de verificação de argumentos e valores de retorno está habilitado.