Programar em C/Passagem de parâmetros
Passagem de Parâmetros
Esta explicação é para quem compila com o GNU gcc.
O que são parâmetros?
Com os programas em interface gráfica usa-se botões ou ícones.
Quando utiliza-se os parâmetros com o console ou prompt os parâmetros são reconhecidos como opções.
Para quem usa sistemas do tipo Unix como o Linux, onde o console não é banalizado como em outros SO's, é mais fácil de se entender.
Imagine que exista um programa cujo nome é "Calcular" e que ele serve para executar operações aritméticas.
Pense agora na sua execução no shell.
$./Calcular restar
"Calcular" é o nome, a "chamada" ao seu programa, enquanto que "restar" é um parâmetro, uma opção.
Esse programa pode comportar vários parâmetros como somar, subtrair e multiplicar, por exemplo.
Exemplo:
/*----------------------------Parâmetros.c------------------------------*/ #include <stdio.h> /* É igual a int main(int argc, char *argv[]) */ int main(int argument_count, char *argument_value[]) { int i; printf("Nome do Programa :%s\n", argument_value[0] ); for (i = 1 ; i < argument_count; i++) printf("Parâmetros passados %d : %s\n", i, argument_value[i]); /* De um enter no fim*/ }
Para compilar:
user@SO:/meu_diretotio$ gcc Parametros.c -o Argumentos
Como diríamos é só passar alguns argumentos para o compilador ;)
Examinando o código
Vamos dar uma olhada na função main(int argc, char *argv[]) vocês podem remarcar os nomes:
- argc "argument count" : Conta o numero de argumentos incluindo o nome do programa.
- E argv "arguments values" : Vamos dizer que cada argv[] é um nome de parâmetro.
- Então temos um que nos da a quantidade de parâmetros e outro que nos da os nomes de cada parâmetro ou opção.
São nomes tradicionais eles podem ser modificado para outros nomes desde que os tipos continuem sendo os mesmos.
Exe:
NOME opçao1 opçao2 opçao3 : argc = 4 $./Calcular somar depois restar : argv[] vai de argv[0] a argv[3]
Aqui argc é igual a 4.
argv[] é na realidade uma tabela de ponteiros exe:
argv[0] e igual a '.' '/' 'C' 'a' 'l' 'c' 'u' 'l ' 'a' 'r' '/0' Calcular
argv[1] e igual a 's' 'o' 'm' 'a' 'r' '/0' somar