Você está aqui: C ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Como escrever uma função C que aceita um número variável de argumentosQuantidade de visualizações: 8474 vezes |
Em algumas situações, pode ser necessário escrever uma função C que aceita um número variável de argumentos. Uma função deste tipo é printf(). Como você sabe, a função printf() nos permite fornecer uma string com marcadores de formatação e um número ilimitado de nomes de variáveis ou valores, que serão avaliados e inseridos em sua devida posição na string resultante. Na linguagem C, uma função que aceita um número variável de argumentos pode ser criada por meio do uso do tipo va_list e três funções: va_start(), va_arg() e va_end(). Tanto o tipo quanto as funções estão disponíveis no header <stdarg.h>. O tipo va_list (na verdade um parâmetro para as macros definidas em cstdarg) é usado para guardar informações sobre os argumentos da função. A função va_start() fica encarregada de inicializar um objeto do tipo va_list, de forma que as chamadas à va_arg() possam retornar os argumentos adicionais fornecidos à função que desejamos escrever. A função va_end(), por sua vez, se encarrega de limpar o objeto va_list e quaisquer outras porções de memória usadas no processo. Veja um trecho de código no qual temos uma função soma() que recebe quantos argumentos forem necessários (observe que o parâmetro obrigatório é a quantidade de argumentos que serão fornecidos): ---------------------------------------------------------------------- Precisa de ajuda? Chama no WhatsApp +55 (62) 98553-6711 (Osmar) Este código foi útil? Paga um cafezinho pra mim :-( PIX: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <stdarg.h> // função que recebe um número variável de argumentos int somar(int n_args, ...){ int i, soma = 0; va_list ap; // declara o objeto va_list va_start(ap, n_args); // inicializa va_list // percorre os valores no va_list for(i = 1; i <= n_args; i++){ soma = soma + va_arg(ap, int); } // limpa o objeto va_list va_end(ap); return soma; } int main(int argc, char *argv[]){ // o valor exibido será 15 // o valor 4 é usado para informar a quantidade de // argumentos sendo fornecidos printf("Soma: %d\n\n", somar(4, 5, 3, 2, 5)); system("PAUSE"); return 0; } |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |