Compartir a través de


Parámetros

Los argumentos son los nombres de los valores pasados a una función por una llamada de función. Los parámetros son los valores que la función espera recibir. En un prototipo de función, los paréntesis detrás del nombre de la función contienen una lista completa de los parámetros de la función y de sus tipos. Las declaraciones de parámetros especifican los tipos, tamaños e identificadores de los valores almacenados en los parámetros.

Sintaxis

function-definition:
declaration-specifiersopt attribute-seqopt declarator declaration-listopt compound-statement

/* attribute-seq es específico de Microsoft */

declarator:
pointeropt direct-declarator

direct-declarator: /* Un declarador de función */
direct-declarator ( parameter-type-list ) /* Declarador de estilo nuevo */
direct-declarator ( identifier-listopt ) /* Declarador de estilo obsoleto */

parameter-type-list: /* La lista de parámetros */
parameter-list
parameter-list , ...

parameter-list:
parameter-declaration
parameter-list , parameter-declaration

parameter-declaration:
declaration-specifiers declarator
declaration-specifiers abstract-declaratoropt

parameter-type-list es una secuencia de declaraciones de parámetros separadas por comas. La forma de cada parámetro en una lista de parámetros tiene el siguiente aspecto:

registeropt type-specifier declaratoropt

Los parámetros de función declarados con el atributo auto generan errores. Los identificadores de los parámetros se utilizan en el cuerpo de la función para hacer referencia a los valores pasados a la función. Puede asignar nombres a los parámetros de un prototipo, pero los nombres salen del ámbito al final de la declaración. Eso significa que se pueden asignar nombres de parámetros de la misma manera o de manera diferente en la definición de función. Estos identificadores no se pueden volver a definir en el bloque extremo del cuerpo de la función, pero se pueden volver a definir en bloques anidados internos como si la lista de parámetros formara un bloque de inclusión.

Cada identificador de parameter-type-list debe ir precedido de su especificador de tipo adecuado, como se muestra en este ejemplo:

void new( double x, double y, double z )
{
    /* Function body here */
}

Si aparece al menos un parámetro en la lista de parámetros, la lista puede finalizar con una coma seguida de tres puntos ( , ... ). Esta construcción, denominada "notación de puntos suspensivos", indica un número variable de argumentos a la función. (Vea Llamadas con un número variable de argumentos para obtener más información). Sin embargo, una llamada a la función debe tener como mínimo tantos argumentos como parámetros haya antes de la última coma.

Si no se van a pasar argumentos a la función, la lista de parámetros se sustituye por la palabra clave void. Este uso de void es distinto de su uso como especificador de tipo.

El orden y el tipo de los parámetros, incluido el uso de la notación de puntos suspensivos, deben ser iguales en todas las declaraciones de función (si existen) y en la definición de función. Los tipos de los argumentos después de conversiones aritméticas usuales deben ser compatibles en cuanto a asignación con los tipos de los parámetros correspondientes. (Vea Conversiones aritméticas usuales para obtener información sobre las conversiones aritméticas). Los argumentos que siguen a los puntos suspensivos no se comprueban. Un parámetro puede tener cualquier tipo fundamental, de estructura, de unión, de puntero o de matriz.

El compilador realiza las conversiones aritméticas usuales independientemente en cada parámetro y en cada argumento, si es necesario. Después de la conversión, ningún parámetro es más corto que int y ningún parámetro tiene el tipo float , a menos que el tipo de parámetro se especifique de forma explícita como float en el prototipo. Esto significa, por ejemplo, que la declaración de un parámetro como char tiene el mismo efecto que su declaración como int .

Vea también

Definiciones de función de C