Funções, parâmetros e retorno de valores em C
Funções, parâmetros e retorno de valores
Uma função é um bloco de código que pode ser usado diversas vezes em um programa [1].
Os parâmetros são as entradas que uma função pode receber. Através dos parâmetros podemos passar argumentos para a função.
- Comentários:
- Normalmente utiliza-se parâmetros quando se faz referência às variáveis declaradas na definição da função e argumentos aos valores atribuídos a esses parâmetros na chamada da função.
- Uma particularidade do C é que os argumentos são passados por valor, isto é, os valores dos argumentos sendo passados são copiados nos parâmetros da função chamada no momento em que a função for chamada. Isto é diferente de linguagens como o PASCAL em que os argumentos são passados por referência, na qual a função chamada tem acesso ao argumento original, e não uma cópia local.
Também é possível que uma função retorne um valor, o qual poderá ser utilizado por outras partes do programa. Caso se deseje que a função não retorne nada inclui-se a palavra void antes do nome da função.
Na declaração de funções o tipo de dados tanto dos parâmetros como do retorno da função devem ser declarados.
- Exemplo
- Função potência, a qual recebe dois inteiros como argumentos (base e n) e retorna a base elevada a potência n.
#include <stdio.h>
int Potencia (int base, int n); /*Protótipo da função*/
void main () /*Programa principal para teste*/
{
int a=2, b=3;
int p;
p = Potencia (a, b); /*Função chamada com argumentos*/
printf ("Resultado: %d elevado a %d = %d\n", a, b, p);
}
int Potencia (int base, int n) /*Definição da função e seus parâmetros*/
{
int p;
for (p = 1; n > 0; --n)
p = p * base;
return p;
}
- Note que o parâmetro n é usado temporariamente dentro da função (decrementado até 0), sem afetar o argumento original com o qual a função foi chamada.
- Argumentos por referência em C
- Para modificar uma variável global em uma função, a chamada da função deve passar como argumento o endereço da variável, ou seja, um ponteiro para a variável. Para tal, a função deve declarar o parâmetro como do tipo ponteiro e acessar a variável indiretamente através dele.
Argumentos argc e argv
O programa principal main() também pode ter parâmetros. Desta forma, pode-se passar argumentos na hora que o programa principal for chamado.
Para tal, a função main() deve ser declarada da seguinte forma:
int main (int argc,char *argv[]);
Os parâmetros argc e argv dão ao programador acesso à linha de comando com a qual o programa foi chamado.
O argc (argument count) é um inteiro e possui o número de argumentos com os quais a função main() foi chamada na linha de comando. Ele é, no mínimo 1, pois o nome do programa é contado como sendo o primeiro argumento.
O argv (argument values) é um ponteiro para uma matriz de strings. Cada string desta matriz é um dos parâmetros da linha de comando. O argv[0] sempre aponta para o nome do programa (que, como já foi dito, é considerado o primeiro argumento). É para saber quantos elementos temos em argv que temos argc.
- Exemplo
- Função potência, a qual recebe dois inteiros como argumentos (base e n) e retorna a base elevada a potência n.
#include <stdio.h>
void main(int argc, char *argv[])
{
int base, n;
int p;
base = atoi(argv[1]); /*A função atoi() converte string em inteiro*/
n = atoi(argv[2]);
for (p = 1; n > 0; --n)
p = p * base;
printf ("Potência: %d \n", p);
}
Função printf
A função printf usa códigos de controle para indicar o tipo de dados e a posição em que os argumentos serão apresentados.
Código | Tipo |
%d | Inteiro |
%f | Float |
%c | Caractere |
%s | String |
%% | Imprime % |
Referências
- ↑ TENENBAUM, Aaron M.; LANGSAM, Yedidyah; AUGENSTEIN, Moshe. Estruturas de dados usando C. Makron Books, 1995.
--Evandro.cantu (discussão) 10h30min de 12 de junho de 2014 (BRT)