Funções
O que são?
Em C uma função é um bloco de código que pode ser executado quando necessário. O
ponto de entrada main, utilizado até nos programas mais simples, é uma função.
Funções podem também receber e retornar dados, e isso é muito importante.
Um grande motivo para utilizar uma função é que basta utilizar o nome dela para executá-la. Não é necessário reescrever seu código, e isso facilita o desenvolvimento de qualquer programa.
Definição e Uso
Definir uma função é simples e consiste em especificar:
- O tipo de dado que a função retorna.
- O nome da função.
- Os dados que a função recebe (parâmetros).
- O código que deve ser executado pela função.
Vamos criar uma função simples chamada foo. Funções que não retornam algum
valor possuem o tipo void, então começamos com:
void foo
Agora, imagine que queremos que foo receba um número inteiro que será chamado
num. Inteiros podem ser representados com o tipo int (outros tipos serão
mostrados mais à frente):
void foo(int num)
A função ainda não possui um corpo. Precisamos escrever algum código para ser
executado, então faremos foo multiplicar num por 2:
void foo(int num)
{
  num * 2;
}
Como a função não retorna nenhum valor, a operação num * 2 é realizada em vão.
Vamos fazer a função retornar o resultado da operação, e para isso basta trocar
void por int (número inteiro) e usar a palavra-chave return, que faz a
função retornar o valor à sua frente (em nosso caso, num * 2):
int foo(int num)
{
  return num * 2;
}
A função está pronta. Para utilizá-la, basta chamá-la e fornecer um número:
foo(5);
Isso é uma expressão que resulta no valor 10.
Funções na biblioteca padrão
Antes de criar uma função, verifique se uma equivalente já não existe na
biblioteca padrão do C. Para calcular o logaritmo natural de um número, por
exemplo, basta utilizar a função log do arquivo math.h. Um programa que
calcula o logaritmo natural de 5 pode ser feito assim:
#include <math.h>
int main(void)
{
  log(5);
  return 0;
}
Embora math.h seja parte da biblioteca padrão, seu respectivo código pode não
ser ligado automaticamente ao programa. Para solicitar a ligação no compilador
GCC, adicione o argumento -lm na compilação (e.g. gcc main.c -lm). Em outros
compiladores o procedimento pode ser diferente.
Lembre-se também que a linha return 0; existe apenas para informar ao sistema
operacional que o programa terminou de executar corretamente.