C++: Fundamentos de Arrays

Última atualização: 2026-08-26

Nas aulas anteriores, cada variável podia armazenar apenas um valor.

Mas se você precisa armazenar as notas de 100 alunos, não pode declarar 100 variáveis, certo?

Arrays resolvem este problema — um bloco contíguo de memória usado para armazenar múltiplos valores do mesmo tipo.



1. O que é um Array?

(1) 1.1 Arrays no Dia a Dia

Analogia da Vida Real Equivalente em Programa
Uma fileira de caixas de correio (cada uma com número diferente) Array (cada elemento tem um índice diferente)
Uma caixa de ovos (12 ovos, numerados 1-12) Array (12 elementos, índices 0-11)

Características dos arrays:

  1. Todos os elementos são do mesmo tipo (todos int, ou todos double)
  2. Memória contígua (elementos são armazenados um após o outro)
  3. Índices começam em 0 (não em 1!)

(2) 1.2 Por Que Precisamos de Arrays?

Sem arrays (exemplo ruim):

▶ Exemplo 2: Prática Básica de Programação (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
 int score1 = 90;
 int score2 = 85;
 int score3 = 92;
 // ... precisa declarar 100 variáveis!

 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
(Program output)

Com arrays (exemplo bom):

CPP
#include <iostream>

int main() {
 int scores[100]; // array que pode conter 100 inteiros

 // usa loop para atribuir valores
 for (int i = 0; i < 100; i++) {
 scores[i] = 0;
 }
 
 return 0;
}


2. Declaração e Inicialização de Arrays

(1) 2.1 Declarando um Array

Sintaxe:

TEXT 📖 Somente leitura
Type arrayName[Número de elementos];

Exemplo:

CPP
int scores[5]; // array que pode conter 5 inteiros
double prices[10]; // array que pode conter 10 doubles
char letters[26]; // array que pode conter 26 chars

💡 Ponto-chave: Os índices de um array começam em 0, então scores[5] tem índices de 0 a 4 (não 1 a 5).

(2) 2.2 Inicializando um Array

Método 1: Inicializar na declaração

TEXT 📖 Somente leitura
int scores[5] = {90, 85, 92, 78, 88};

Método 2: Inicialização parcial

CPP
int scores[5] = {90, 85}; // inicializa apenas os dois primeiros, resto se torna 0 automaticamente

Método 3: Deixar o compilador inferir o tamanho

CPP
int scores[] = {90, 85, 92, 78, 88}; // compilador infere tamanho como 5

💡 Dica: O Método 3 é recomendado — se você mudar o conteúdo do array depois, não precisa atualizar o tamanho manualmente.



3. Acessando Elementos do Array

(1) 3.1 Lendo Elementos

Sintaxe:

TEXT 📖 Somente leitura
arrayName[Índice]

Exemplo:

CPP
#include <iostream>

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 
 std::cout << "First score: " << scores[0] << std::endl; // 90
 std::cout << "Third score: " << scores[2] << std::endl; // 92
 std::cout << "Last score: " << scores[4] << std::endl; // 88
 
 return 0;
}

(2) 3.2 Modificando Elementos

CPP
#include <iostream>

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 
 scores[1] = 95; // muda a segunda nota para 95
 std::cout << "Modified second score: " << scores[1] << std::endl; // 95
 
 return 0;
}


4. Percorrendo um Array

(1) 4.1 Percorrendo com um Loop for

CPP
#include <iostream>

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 
 std::cout << "All scores: " << std::endl;
 for (int i = 0; i < 5; i++) {
 std::cout << "No. " << i + 1 << " Score: " << scores[i] << std::endl;
 }
 
 return 0;
}

💡 Ponto-chave: Ao percorrer um array, a condição do loop é tipicamente i < array_size, em vez de i <= array_size - 1 (que é mais propenso a erros).



5. Tamanho do Array

(1) 5.1 Calculando o Número de Elementos com sizeof

CPP
#include <iostream>

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 
 int size = sizeof(scores) / sizeof(scores[0]); // calcula tamanho do array
 std::cout << "Array size:" << size << std::endl; // 5
 
 return 0;
}

Como funciona:

💡 Dica: Este método só funciona para arrays reais, não para ponteiros (coberto mais tarde).



6. Arrays como Parâmetros de Função

(1) 6.1 O Problema: Arrays Decaem para Ponteiros

Quando você passa um array para uma função, ele decai para um ponteiro (perdendo informação de tamanho).

CPP
#include <iostream>

// array como parâmetro, precisa passar o tamanho
void printArray(int arr, int size) {
 for (int i = 0; i < size; i++) {
 std::cout << arr[i] << " ";
 }
 std::cout << std::endl;
}

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 printArray(scores, 5); // passa nome do array (que é endereço do primeiro elemento)
 return 0;
}

💡 Ponto-chave: Ao passar um array como parâmetro, você deve também passar o tamanho.



7. Erros Comuns

(1) 7.1 Acesso Fora dos Limites do Array

Exemplo de erro:

CPP
#include <iostream>

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 
 std::cout << scores[5] << std::endl; // ERRO: fora dos limites! índice máximo é 4
 
 return 0;
}

Consequência: Leitura de valores lixo, ou travamento do programa.

💡 Dica: C++ não verifica automaticamente os limites do array! Isso é uma razão pela qual C++ é rápido, mas também uma fonte comum de bugs.

(2) 7.2 Usando uma Variável como Tamanho do Array (Antes do C++11)

Exemplo de erro (antes do C++11):

CPP
#include <iostream>

int main() {
 int n = 5;
 int scores[n]; // ERRO (antes do C++11): tamanho do array deve ser constante em tempo de compilação
 
 return 0;
}

Abordagem correta (suportada após C++11):

CPP
#include <iostream>

int main() {
 int n = 5;
 int scores[n]; // OK (após C++11): Variable Length Array (VLA) suportado
 
 return 0;
}

💡 Abordagem melhor: Use std::vector (coberto mais tarde), que suporta tamanhos dinâmicos.



8. Prática: Calculando a Média das Notas

▶ Exemplo 1: Calculando Média das Notas (Dificuldade ⭐⭐)

CPP
#include <iostream>
#include <iomanip>

int main() {
 int scores[5] = {90, 85, 92, 78, 88};
 int sum = 0;
 
 // calcula nota total
 for (int i = 0; i < 5; i++) {
 sum += scores[i];
 }

 // calcula média
 double average = static_cast<double>(sum) / 5;
 
 std::cout << std::fixed << std::setprecision(2);
 std::cout << "Total: " << sum << std::endl;
 std::cout << "Average: " << average << std::endl;
 
 return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
Total: 433
Average: 86.60

❓ Perguntas Frequentes

P: Por que os índices de arrays começam em 0 em vez de 1? *R: Razão histórica — quando C foi projetado, por eficiência, o nome do array é simplesmente o endereço do primeiro elemento. > > int scores[5]; > // scores é &scores[0](endereço do primeiro elemento) > // scores[i] é (scores + i)(aritmética de ponteiro) > > Começar em 0 torna a aritmética de ponteiros mais simples. P: Arrays podem mudar de tamanho? R: Não! O tamanho de um array deve ser determinado em tempo de compilação e não pode ser alterado.

Se você precisa de dimensionamento dinâmico, use std::vector (coberto mais tarde).

P: Como inicializo todos os elementos do array com 0? R:> > int scores[100] = {0}; // Método 1: Inicialização parcial(restante preenchido com 0) > > int scores[100]; > for (int i = 0; i < 100; i++) { > scores[i] = 0; // Método 2: Atribuir com loop > } >


▶ Exemplo 3: Travessia de Array (Dificuldade ⭐)

CPP
#include <iostream>

int main() {
    int scores[] = {85, 92, 78, 90, 88};
    int sum = 0;

    for (int i = 0; i < 5; i++) {
        sum += scores[i];
    }

    double avg = sum / 5.0;
    std::cout << "Average: " << avg << std::endl;

    return 0;
}
▶ Experimente

Saída:

TEXT 📖 Somente leitura
Average: 86.6
💡 Dica: Arrays podem ser inicializados com {}, e o número de elementos pode ser calculado usando sizeof(arr) / sizeof(arr[0]).


📖 Resumo


📝 Exercícios

  1. Básico (Dificuldade ⭐): Declare um array double para armazenar 5 preços, depois use um loop para calcular o preço total.

  2. Intermediário (Dificuldade ⭐⭐): Escreva uma função int findMax(int arr, int size) que encontre o valor máximo em um array. Teste-a em main.

  3. Desafio (Dificuldade ⭐⭐⭐): Escreva um programa que permita ao usuário digitar 10 inteiros, armazene-os em um array, depois:

  4. Encontre os valores máximo e mínimo

  5. Calcule a média

  6. Exiba todas as notas acima da média


9. 🚀 Próximo Passo

Agora que você aprendeu fundamentos de arrays, vamos avançar para Arrays Multidimensionais (Aula 17) — lidando com dados tabulares (como matrizes, tabuleiros de jogos).

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%