Saltar para o conteúdo

Programar em C/Passagem de parâmetros

Origem: Wikilivros, livros abertos por um mundo aberto.
Esta página precisa ser reciclada (discuta).
Ao melhorá-la, você estará ajudando o Wikilivros.

Passagem de Parâmetros

[editar | editar código-fonte]

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