Capítulo 5 - Arrays


Conteúdo  Capítulo anterior  Capítulo seguinte 

Os arrays em C são semelhantes aos que são definidos e usados em outras linguagens. No entanto há algumas diferenças na sintaxe de declaração e utilização e alguma interligação com os apontadores, como veremos mais à frente.


Tópicos



Arrays unidimensionais e multidimensionais

Os arrays declaram-se no C como se declaram as outras variáveis, acrescentando apenas um valor para a sua dimensão. Assim começa-se por indicar o tipo de valores que vão estar contidos em cada posição do array, seguindo-se o nome do próprio, e terminando com a indicação da dimensão (nº de elementos) entre brackets [ ] . Por exemplo, para definir um array de 50 inteiros poderia usar-se a seguinte declaração:

int numbers[50];

Nota: Em C os arrays começam sempre no índice 0 e vão até ao valor da dimensão menos 1. Na definição de cima os índices válidos do array numbers vão desde 0 até 49.

O acesso aos elementos individuais do array faz-se utilizando também colchetes. Exemplos:

terceiro_valor = numbers[2];
numbers[5] = 100;

Os arrays multidimensionais declaram-se, indicando as várias dimensões umas a seguir às outras, da mesma forma que a primeira dimensão. Exemplo, para duas dimensões:

float matriz[50][50];

Para maiores dimensões basta acrescentar à declaração mais elementos [...]:

double big_array[10][10][22]...[8];

Os acessos aos elementos individuais faz-se da mesma forma:

valor = matriz[10][4];
matriz[0][1] = 100;

Nota: Em C os arrays são armazenados na memória por forma a que dois elementos consecutivos (na memória) correspondem prioritariamente a uma variação do último índice. Para arrays bidimensionais, isso corresponde a um armazenamento linha a linha.
 

Up

Strings

Na linguagem C os strings são simplesmente arrays de caracteres. No entanto a linguagem propriamente dita não tem quaisquer facilidades para o manuseio de strings (excepto para a primeira inicialização). Apenas na biblioteca standard se encontra uma vasta gama de funções de manuseio de strings.

Uma declaração de uma string capaz de conter 50 caracteres:

char nome[51];

Como o C não manuseia strings diretamente todas as seguintes instruções são ilegais:

char nome[50], apelido[50], nome_completo[100];

nome = "Arnold";                                   /* Ilegal */
apelido = "Schwarznegger";                         /* Ilegal */
nome_completo = "Mr. " + nome + ' ' + apelido;     /* Ilegal */

No entanto a seguinte declaração com inicialização é válida:

char nome[50] = "Dave";

Para permitir a existência de strings de tamanho variável, quer a inicialização anterior, quer todas as funções de strings da biblioteca standard acrescentam um carácter final a todos os strings. Esse carácter (que marca o fim de um string) tem o valor 0 (zero) (dígito 0, não o carácter '0'). Se quisermos representar esse carácter podemos escrever '\0'.

A inicialização anterior produz a seguinte imagem na memória:

Para imprimir um string no vídeo  pode usar-se a função printf(), com um especificador, no 1º parâmetro igual a %s, no local da variável do tipo string (char []):

printf("%s", nome);

 

Up

Exercícios

Up

[REV 04/2000]