Em C, os vetores são armazenados na memória de forma sequencial e contígua. Isso significa que, ao declarar um vetor, o programa reserva uma sequência de posições de memória lado a lado, suficiente para armazenar todos os seus elementos.

Por exemplo, considere a declaração:

int vetor[5];

Nesse caso, o programa precisa reservar espaço para armazenar 5 valores inteiros. Supondo que cada int ocupe 4 bytes, esse vetor exigirá, ao todo, 20 bytes de memória.

A ideia pode ser representada de forma simplificada assim:

Índice Valor armazenado Espaço na memória
0 vetor[0] 4 bytes
1 vetor[1] 4 bytes
2 vetor[2] 4 bytes
3 vetor[3] 4 bytes
4 vetor[4] 4 bytes

Embora, no código, trabalhemos com índices como 0, 1, 2, 3 e 4, internamente o que existe é uma sequência de regiões consecutivas de memória.

As figuras originais da aula ajudam justamente a visualizar essa ideia: cada posição do vetor corresponde a um bloco de memória reservado para armazenar um elemento do tipo definido.

Alocação contígua

Quando o vetor é declarado, o programa precisa encontrar uma região contínua de memória que comporte todos os seus elementos. Em outras palavras, não basta haver memória livre “espalhada”; é necessário existir um bloco contínuo suficientemente grande para armazenar o vetor inteiro.

Memria_e_Array_-_declarao_do_vetor.jpeg

Memria_e_Array_-_declarao_do_vetor_04.jpeg

Esse comportamento é importante porque permite acesso eficiente aos elementos da estrutura. Como os dados estão armazenados em sequência, a linguagem consegue localizar cada posição a partir do endereço inicial do vetor e do índice desejado.

É justamente essa organização que faz com que o acesso por índice seja simples e rápido.

O nome do vetor e a posição inicial

Quando usamos o identificador do vetor no código, normalmente ele está associado ao endereço da primeira posição da estrutura na memória. Ou seja, o nome do vetor representa, de forma simplificada, o ponto onde essa sequência de elementos começa.

Mais adiante, quando estudarmos ponteiros e manipulação de memória, essa relação ficará mais clara. Neste momento, o importante é compreender a ideia geral: o vetor corresponde a uma sequência contínua de posições, e cada índice aponta para um elemento dentro dessa sequência.

Por que isso importa?

Entender que o vetor ocupa posições consecutivas de memória ajuda a compreender vários comportamentos da linguagem C, por exemplo: