Partilhar via


Parâmetros

Argumentos são nomes de valores passados para uma função por uma chamada de função. Parâmetros são os valores que a função espera receber. Em um protótipo de função, os parênteses após o nome da função contêm uma lista completa dos parâmetros da função e seus tipos. As declarações de parâmetros especificam os tipos, tamanhos e identificadores dos valores armazenados nos parâmetros.

Sintaxe

function-definition:
declaration-specifiers attribute-seq declarator declaration-list optar porcompound-statement

/* attribute-seq é específico da Microsoft */

declarator:
pointer opte pordirect-declarator

direct-declarator: /* Um declarador de função */
direct-declarator ( parameter-type-list ) /* Declarador de novo estilo */
direct-declarator ( identifier-list ) /* Declarador de estilo obsoleto */

parameter-type-list: /* A lista de parâmetros */
parameter-list
parameter-list , ...

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

parameter-declaration:
declaration-specifiers declarator
declaration-specifiers abstract-declarator optar por

O parameter-type-list é uma sequência de declarações de parâmetros separadas por vírgulas. A forma de cada parâmetro em uma lista de parâmetros tem esta aparência:

register type-specifier declarator optar por

Os parâmetros de função declarados com o auto atributo geram erros. Os identificadores dos parâmetros são usados no corpo da função para se referir aos valores passados para a função. Você pode nomear os parâmetros em um protótipo, mas os nomes saem do escopo no final da declaração. Isso significa que os nomes dos parâmetros podem ser atribuídos da mesma maneira ou de forma diferente na definição da função. Esses identificadores não podem ser redefinidos no bloco mais externo do corpo da função, mas podem ser redefinidos em blocos internos aninhados como se a lista de parâmetros fosse um bloco anexo.

Cada identificador deve parameter-type-list ser precedido por seu especificador de tipo apropriado, como mostrado neste exemplo:

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

Se pelo menos um parâmetro ocorrer na lista de parâmetros, a lista pode terminar com uma vírgula seguida de três pontos (, ...). Essa construção, chamada de "notação de reticências", indica um número variável de argumentos para a função. Para obter mais informações, consulte Chamadas com um número variável de argumentos. No entanto, uma chamada para a função deve ter pelo menos tantos argumentos quantos os parâmetros antes da última vírgula.

Se nenhum argumento for passado para a função, a lista de parâmetros será substituída pela palavra-chave void. Este uso de é distinto de seu uso como um especificador de void tipo.

A ordem e o tipo de parâmetros, incluindo qualquer uso da notação de reticências, devem ser os mesmos em todas as declarações de função (se houver) e na definição de função. Os tipos de argumentos após conversões aritméticas usuais devem ser compatíveis com os tipos dos parâmetros correspondentes. (Consulte Conversões aritméticas usuais para obter informações sobre conversões aritméticas.) Os argumentos após as reticências não são verificados. Um parâmetro pode ter qualquer tipo fundamental, estrutura, união, ponteiro ou matriz.

O compilador executa as conversões aritméticas usuais independentemente em cada parâmetro e em cada argumento, se necessário. Após a conversão, nenhum parâmetro é menor do que um int, e nenhum parâmetro tem float tipo, a menos que o tipo de parâmetro seja explicitamente especificado como float no protótipo. Significa, por exemplo, que declarar um parâmetro como a char tem o mesmo efeito que declará-lo como um int.

Ver também

Definições de função C