Como usar vetores em C: um guia prático
Vetores em C são apenas arrays unidimensionais alocados na memória. Vou explicar como funcionam na prática, não só a teoria.
Vetor linguagem C: declaração e acesso básico
Para declarar um vetor em C, você usa a sintaxe tipo nome[tamanho]. Por exemplo, para criar um vetor de 10 inteiros:
int numeros[10];
Isso reserva espaço para 10 posições, indexadas de 0 a 9. Acessar fora desses limites é um erro comum que trava programas ou causa comportamento imprevisível. C não faz verificação automática de limites — isso é responsabilidade do programador. Para preencher o vetor, você pode usar um loop for:
for(int i = 0; i 10; i++) {
numeros[i] = i * 2;
}
Aqui, cada posição recebe o dobro do índice. Simples, direto.
Inicialização e leitura de dados
Vetores podem ser inicializados na declaração:
int numeros[5] = {1, 2, 3, 4, 5};
Se você passar menos valores que o tamanho, os restantes ficam zero. Se passar mais, dá erro de compilação. Para ler dados do usuário, use o scanf com o operador & para cada posição:
👉 Clique no botão abaixo para saber mais sobre o assunto!
scanf("%d", &numeros[i]);
Cuidado: scanf não valida se o índice está dentro dos limites. Se o usuário digitar algo errado ou o loop tiver bug, você pode sobrescrever memória adjacente.
Passando vetores para funções
Quando passa um vetor para uma função, passa-se o endereço do primeiro elemento, não uma cópia do array inteiro. Isso significa que qualquer alteração na função afeta o vetor original.
void modificar(int vet[], int tamanho) {
vet[0] = 100; // modifica o vetor original
}
Por isso, sempre passe o tamanho junto como parâmetro. C não armazena o tamanho do vetor no ponteiro.
Um problema real que eu encontrei
Certa vez estava trabalhando em um programa que processava imagens em tons de cinza (valores de 0 a 255). O vetor tinha 512 elementos, mas eu estava usando int para armazená-los. O problema era que a lógica de processamento exigia cálculos intermediários que podiam exceder 255, mas o array inteiro ficava em memória suficiente para os valores. Quando mudei para unsigned char, o programa ficou mais rápido e usou menos memória. Erros de tipo em vetores pequenos passam despercebidos até causar bugs estranhos.
Pegadinhas comuns com vetores em C
Um erro frequente é confundir a inicialização de vetores com a atribuição subsequente. Você pode inicializar na declaração, mas não pode fazer vet = {1,2,3} depois. Para atribuir valores depois da declaração, use loops ou a função memcpy. Outro problema é a diferença entre vetores estáticos e dinâmicos. Vetores estáticos são alocados na pilha e têm tamanho fixo no momento da compilação. Para tamanhos variáveis, use alocação dinâmica com malloc:
int *vetor = malloc(tamanho * sizeof(int));
Não esqueça de liberar a memória com free() quando terminar de usar, senão vaza memória.
Boas práticas para vetores em C
Sempre verifique índices antes de acessar. Use macros ou constantes para definir tamanhos e evite hardcodar números no código. Para vetores grandes, considere alocar na heap com malloc para evitar estouro da pilha. Vetores em C são poderosos mas exigem cuidado. Se você está começando, pratique com vetores pequenos antes de partir para estruturas mais complexas como matrizes ou vetores dinâmicos.