Um Exemplo com Arrays

Uma função para calcular a média de três números é muito específica e limitada. Uma função mais geral calcularia a média de qualquer quantidade de números. Isso requer passar os números em um array. Um array é um objeto na memória que contém uma série de valores do mesmo tipo de dado. Este capítulo apresenta os conceitos básicos e o uso de arrays através de um exemplo; para a explicação completa, veja .

Aqui está a definição de uma função para calcular a média de vários números de ponto flutuante, passados como tipo double. O primeiro parâmetro, length, especifica quantos números são passados. O segundo parâmetro, input_data, é um array que contém esses números.

double
avg_of_double (int length, double input_data[])
{
  double sum = 0;
  int i;

  for (i = 0; i < length; i++)
    sum = sum + input_data[i];

  return sum / length;
}

O código anterior introduz a expressão para se referir a um elemento de um array: input_data[i] significa o elemento de índice i no array input_data. O índice do elemento pode ser qualquer expressão com um valor inteiro; neste caso, a expressão é i. Veja .

O menor índice válido em um array é 0, não 1, e o maior índice válido é um a menos que o número de elementos. (Isso é conhecido como indexação com origem zero.)

Este exemplo também introduz a maneira de declarar que um parâmetro de função é um array. Tal declaração é feita após o nome do parâmetro. Assim como double foo declara que foo é do tipo double, double input_data[] declara que cada elemento de input_data é do tipo double. Portanto, input_data em si tem o tipo "array de double".

É muito comum em textos técnicos em inglês você encontrar as palavras foo, bar ou foobar. Elas são utilizadas para passar uma ideia de "qualquer coisa", ou "qualquer nome", ou seja, a ideia de que o nome não importa. Em português, seria equivalente ao modo como nos referenciamos a pessoas desconhecidas com "fulano" ou "cicrano".

Ao declarar um parâmetro que é um array, não é necessário dizer qual é o comprimento do array. Neste caso, o parâmetro input_data não tem informação de comprimento. É por isso que a função precisa de outro parâmetro, length, para que o chamador forneça essa informação para a função avg_of_double.

O nome avg_of_double é uma forma abrevidada de average of double. Em inglês, average é média. Já length, traduz para tamanho (no caso do código de exemplo, tamanho do array -em outras palavras, o número de elementos do array). Temos também input_data (dados de entrada) e sum (soma).

Atualizado