Deixar-nos ver um outro exemplo. O seguinte exemplo usa uma função chamada o quadrado que escreve o quadrado dos números entre 1 e 10.
#include <stdio.h>
int square(int x); /* Function prototype */
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
printf("Square of %d is %d\n", counter, square(counter));
return 0;
}
/* Define the function 'square' */
int square(int x)
{
return x * x;
}
A saída deste programa será indicada como segue:
Square of 1 is 1
Square of 2 is 4
Square of 3 is 9
Square of 4 is 16
Square of 5 is 25
Square of 6 is 36
Square of 7 is 49
Square of 8 is 64
Square of 9 is 81
Square of 10 is 100 |
O quadrado do protótipo da função declara uma função que faça exame de um parâmetro do inteiro e retorne um inteiro. Quando o compilador alcança a ligação de controle ao quadrado no programa principal, pode verificar a ligação de controle de encontro à definição da função.
Quando o programa alcança a linha que chama o quadrado da função, o programa salta à função e executa essa função antes de recomeçar seu trajeto com o programa principal. Os programas que não têm um tipo do retorno devem ser declarados usando o vácuo. Assim os parâmetros à função podem ser passagem por Valor ou passagem por Referência.
Uma função Recursive é uma função que se chame. E este processo é chamado recursion.
Passar por Valor Função
Os parâmetros da função quadrada no exemplo precedente são passados pelo valor. Isto significa que somente uma cópia da variável estêve passada à função. Nenhumas mudanças ao valor não serão refletidas para trás à função de chamada.
O seguinte exemplo usa o pass-por-valor e muda o valor do parâmetro passado, que não tem nenhum efeito na função de chamada. O count_down da função foi vácuo tão declarado como não há nenhum tipo do retorno.
#include <stdio.h>
void count_down(int x);
int main()
{
int counter;
for (counter=1; counter<=10; counter++)
count_down(counter);
return 0;
}
void count_down(int x)
{
int counter;
for (counter = x; counter > 0; counter--)
{
printf("%d ", x);
x--;
}
putchar('\n');
}
A saída do programa será indicada como segue:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
6 5 4 3 2 1
7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1 |
|