Tipo devuelto
El tipo de valor devuelto de una función establece el tamaño y el tipo de valor devuelto por la función. Corresponde a type-specifier
en la sección Sintaxis:
Sintaxis
function-definition
:
declaration-specifiers
optattribute-seq
optdeclarator
declaration-list
optcompound-statement
/* attribute-seq
es específico de Microsoft */
declaration-specifiers
:
storage-class-specifier
declaration-specifiers
opt
type-specifier
declaration-specifiers
opt
type-qualifier
declaration-specifiers
opt
type-specifier
:
void
char
short
int
__int8
/* Específico de Microsoft */
__int16
/* Específico de Microsoft */
__int32
/* Específico de Microsoft */
__int64
/* Específico de Microsoft */
long
long long
float
double
long double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
El elemento type-specifier
puede especificar cualquier tipo fundamental, de estructura o de unión.
El tipo de valor devuelto especificado en la definición de la función debe coincidir con el tipo de valor devuelto en las declaraciones de la función que se encuentren en cualquier parte del programa. Una función devuelve un valor cuando se ejecuta una instrucción return
que contiene una expresión. La expresión se evalúa, se convierte al tipo de valor devuelto si es necesario y se regresa al punto donde se llamó a la función. Si una función se declara con el tipo de valor devuelto void
, una instrucción "return" que contiene una expresión genera una advertencia y la expresión no se evalúa.
En los ejemplos siguientes se muestran los valores devueltos de la función.
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 );
}
En este ejemplo se define el tipo STUDENT
con una declaración de typedef
y se define la función sortstu
para tener el tipo de valor devuelto STUDENT
. La función selecciona y devuelve uno de sus dos argumentos de estructura. En las llamadas posteriores a la función, el compilador comprueba que los tipos de argumentos son STUDENT
.
Nota
Se podría conseguir una mayor eficacia pasando punteros a la estructura, en lugar de la estructura completa.
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 );
}
En este ejemplo se define una función que devuelve un puntero a una matriz de caracteres. La función toma dos matrices de caracteres (cadenas) como argumentos y devuelve un puntero a la cadena más corta. Un puntero a una matriz apunta al primero de los elementos de la matriz y tiene su tipo; por tanto, el tipo de valor devuelto de la función es un puntero al tipo char
.
No necesita declarar funciones con el tipo de valor devuelto int
antes de llamarlas, aunque se recomienda usar prototipos para que se pueda comprobar el tipo correcto de los argumentos y valores devueltos.
Vea también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de