<aside>

Conhecimentos necessários:

Variáveis, entrada e saída de dados, estruturas condicionais e estruturas repetitivas

Dados, bases numéricas e memória

Tratamento de caracteres

Sub-rotinas (funções)

</aside>

<aside>

Navegação

</aside>

Bom… e se quiséssemos salvar múltiplos dados? Tipo as notas de todos os 3400 alunos da uma escola, ou o CPF de todos os cidadãos de uma cidade? Concorda comigo que não seria nada eficiente criar milhares de variáveis? É nesses momentos que precisamos usar os vetores ou as matrizes!

Obs.: um vetor pode ser chamado também de array unidimensional e uma matriz de array multidimensional.

O que são?

Um vetor nada mais seria do que uma lista de variáveis! Ele não se limita a guardar apenas um número, ou apenas uma letra, por exemplo.

Já uma matriz, é uma “lista de lista de variáveis” ou um “vetor de vetores”! Meio confuso, né? Já, já mostro um exemplo de tudo isso!

Declaração

Para declararmos um vetor, basta informar o tipo de variável, o nome dela e colchetes na frente. Dentro desses colchetes virão a quantidade de dados que salvaremos lá dentro. Como exemplo, vou criar um vetor para poder guardar a idade de 30 pessoas:

int idades[30];

Viu? Assim criamos um vetor que consegue guardar 30 ints, o que seria o mesmo de criar 30 variáveis para isso, só que se um jeito mais fácil!

Ei… Mas percebe que parece muito como criamos uma string? Exatamente! Pois a string nada mais é do que um vetor de char!

Para declararmos uma matriz é quase da mesma forma… mas lembra que ela é um “vetor de vetores”? Então só precisamos colocar mais um par de colchetes na frente e indicar quantos vetores queremos! Como exemplo, vou querer criar 5 listas de 30 idades, cada:

int idades[5][30];

Lembra que uma string é um vetor de char? Então se quisemos, podemos fazer uma matriz para guardar 5 strings dessa mesma forma!

Atribuição

Para atribuir, vamos colocar os valores entre chaves separados por vírgulas. Desse jeito:

int idades[5] = {18, 19, 31, 7, 34};

Ou podemos colocar elemento por elemento. Desse jeito:

int main(){
	int idade[5];
	
	idade[0] = 18; //coloca 18 no primeiro elemento.
	idade[1] = 19; //coloca 19 no segundo elemento.
	idade[2] = 31; //coloca 31 no terceiro elemento.
	idade[3] = 7; //coloca 7 no quarto elemento.
	idade[4] = 34; //coloca 34 no quinto elemento.
	
	return 0;
}

Para usar no printf, usamos cada um dos elementos como se fosse uma variável normal. Tipo assim:

printf("Segunda idade: %d", idade[1]);

Já para matrizes, podemos atribuir cada vetor dela do mesmo jeito do primeiro caso acima, sempre lembrando que ela seria tipo um “vetor de vetores”:

int main(){
	int idade[3][3] = {{11, 12, 13}, {14, 15, 16}, {17, 18, 19}};
	
	return 0;
}

Ou também podemos colocar elemento por elemento. Desse jeito:

int main(){
	int idade[3][3];
	
	idade[0][0] = 11; //atribuindo ao 1º elemento do 1º vetor.
	idade[0][1] = 12; //atribuindo ao 2º elemento do 1º vetor.
	idade[0][2] = 13; //atribuindo ao 3º elemento do 1º vetor.
	idade[1][0] = 14; //atribuindo ao 1º elemento do 2º vetor.
	idade[1][1] = 15; //atribuindo ao 2º elemento do 2º vetor.
	idade[1][2] = 16; //atribuindo ao 3º elemento do 2º vetor.
	idade[2][0] = 17; //atribuindo ao 1º elemento do 3º vetor.
	idade[2][1] = 18; //atribuindo ao 2º elemento do 3º vetor.
	idade[2][2] = 19; //atribuindo ao 3º elemento do 3º vetor.
	
	return 0;
}

Mas concorda que fazer isso manualmente é trabalhoso? Por isso quase sempre que usamos arrays, também usamos estruturas de repetições!

Um detalhe importante é que a string é um tipo de vetor especial. É o único tipo que podemos atribuir assim:

char nome[5] = "Joao";

Ou assim, também, se quisermos:

char nome[5] = {'J', 'o', 'a', 'o', '\\0'};

Nunca esquecendo o caractere ‘\0’ que é o indicador do final da string.

Arrays como argumento

Um detalhe importante que faz toda a diferença quando trabalhamos com arrays nos parâmetros e argumentos é: todo array é passado por referência. Ou seja, a função tem capacidade de mudar o valor original do array. Um exemplo:

#include <stdio.h>

void MudaArray(int array[]){
	array[0] = 31;
	array[1] = 41;
	array[2] = 51;
	
}

int main(){
	int idade[3] = {18, 19, 20};
	MudaArray(idade);
	
	printf("%d %d %d", idade[0], idade[1], idade[2]); //vai mostrar "31 41 51"
	return 0;
}