Ao trabalhar com vetores em C, é essencial respeitar os limites da estrutura. Se um vetor possui tamanho N, então seus índices válidos vão de 0 até N - 1.

Por exemplo, se declararmos:

int vetor[5];

as únicas posições válidas serão:

vetor[0], vetor[1], vetor[2], vetor[3], vetor[4]

Qualquer tentativa de acessar vetor[5], vetor[6] ou índices ainda maiores estará fora dos limites do vetor.

Ausência de checagem automática

A linguagem C não realiza, automaticamente, a verificação desses limites. Isso significa que um código como o seguinte pode compilar:

int vetor[5] = {1, 2, 3, 4, 5};

printf("%d\n", vetor[7]);

Entretanto, esse acesso é inválido. O programa estará tentando ler uma posição de memória que não pertence ao vetor.

Esse tipo de situação caracteriza o chamado comportamento indefinido. Em termos práticos, isso significa que o resultado não é previsível: o programa pode parecer funcionar, pode imprimir um valor incoerente, pode falhar ou apresentar outros efeitos inesperados.

Por essa razão, o controle dos limites do vetor é responsabilidade do programador.

Uso do identificador do vetor sem índice

Outro ponto importante é lembrar que o nome do vetor, quando usado isoladamente, não representa um elemento específico da estrutura.

Observe o exemplo:

int vetor[10];

vetor = 5;

Esse código é inválido, pois um vetor não pode receber um valor inteiro dessa forma.

Já o trecho abaixo pode até compilar com aviso:

printf("%d\n", vetor);

Nesse caso, o nome do vetor está sendo interpretado de forma associada ao endereço inicial da estrutura na memória, e não como um elemento individual. Mais adiante, quando estudarmos ponteiros e memória, esse comportamento ficará mais claro.