Parâmetros
Os argumentos são os nomes dos 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âmetro especificam os tipos, tamanhos e identificadores de valores armazenados nos parâmetros.
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 * /
Declarador :
ponteiro optDeclarador de directDeclarador de Direct: / * Declarador uma função * /
Declarador de Direct ( lista de tipo de parâmetro ) / * Declarador de novo estilo * /lista de tipo de parâmetro: / * uma lista de parâmetros * /
lista de parâmetroslista de parâmetros ,...
lista de parâmetros:
declaração de parâmetrolista de parâmetros , declaração de parâmetro
declaração de parâmetro:
Declarador de especificadores de declaraçãoDeclarador de resumo de especificadores de declaração opt
O lista de tipo de parâmetro é uma seqüência de declarações de parâmetro, separados por vírgulas.O formulário de cada parâmetro em uma lista de parâmetros tem esta aparência:
[register] type-specifier [declarator]
Parâmetros da função declarada com o auto atributo gerar erros.Os identificadores dos parâmetros são usados no corpo da função para consultar os valores passados para a função.Você pode nomear os parâmetros em um protótipo, mas os nomes entre fora do escopo no final da declaração.Portanto os nomes de parâmetro podem ser atribuídos o mesmo propósito ou diferentes na definição de função.Esses identificadores não podem ser redefinidos no bloco mais externo do corpo da função, mas pode ser redefinidos em blocos aninhados internos como se a lista de parâmetros fosse um bloco delimitador.
Cada identificador em lista de tipo de parâmetro deve ser precedido por seu especificador de tipo apropriado, como mostrado neste exemplo:
void new( double x, double y, double z )
{
/* Function body here */
}
Se ocorrer de pelo menos um parâmetro na lista de parâmetros, a lista pode terminar com uma vírgula seguida de três períodos (,...).Essa construção, chamada de "notação reticências", indica um número variável de argumentos para a função.(Consulte chamadas com um número variável de argumentos para obter mais informações.) No entanto, uma chamada para a função deve ter pelo menos o mesmo número de argumentos parâmetros antes da última vírgula.
Se nenhum argumento for a serem passados para a função, a lista de parâmetros é substituída pela palavra-chave void.Este uso de void é diferente de seu uso como um especificador de tipo.
A ordem e o tipo dos parâmetros, incluindo qualquer uso da notação reticências, devem ser o mesmo em todas as declarações de função (se houver) e na definição de função.Os tipos dos argumentos após conversões aritméticas usuais devem ser compatível com a atribuição com os tipos dos parâmetros correspondentes.(Consulte Conversões aritméticas usuais para obter informações sobre conversões aritméticas.) Seguindo as reticências de argumentos não são verificados.Um parâmetro pode ter qualquer fundamentais, o ponteiro de união, estrutura, ou tipo de matriz.
O compilador executa 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 que um int, e nenhum parâmetro tem float digite a menos que explicitamente, o tipo de parâmetro é especificado como float no protótipo.Isso significa, por exemplo, que, ao declarar um parâmetro como um char tem o mesmo efeito de declará-la como um int.