Arrays em C++

Desvendando os Mistérios dos Arrays

Prepare-se para uma aventura repleta de colchetes!

Declaração e Manipulação de Arrays


int numeros[5]; // Declarando um array de 5 inteiros
int pontuacoes[] = {100, 200, 300, 400, 500}; // Pontuações em um jogo

// Array multidimensional para um tabuleiro de jogo
int tabuleiro[3][3] = {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}};
                

Arrays: porque lidar com uma variável por vez é coisa do passado!

Acesso a Elementos de um Array


int notas[] = {85, 90, 78, 92, 88};

// Notas dos testes: tentando manter a média alta para impressionar!
cout << "Primeira nota: " << notas[0] << endl; // 85
cout << "Última nota: " << notas[4] << endl;   // 88

// Cuidado: acessar notas[5] é como tentar encontrar 
// uma agulha num palheiro digital! (E pode causar um crash!)
                

Lembre-se: em C++, contamos a partir do zero. Por que será que começamos do zero? Porque zero é o novo um!

Visualização de um Array em C++

O Mágico Operador sizeof


int numeros[] = {10, 20, 30, 40, 50};

// Tamanho total do array em bytes
size_t tamanhoTotal = sizeof(numeros);

// Tamanho de um elemento do array em bytes
size_t tamanhoElemento = sizeof(numeros[0]);

// Número de elementos no array
size_t numeroElementos = tamanhoTotal / tamanhoElemento;

cout << "O array tem " << numeroElementos << " elementos." << endl;
                

Dica: Pense no sizeof como uma régua que mede o espaço que seu array ocupa na memória!

sizeof: Dicas e Armadilhas

  • sizeof(array) retorna o tamanho total em bytes
  • sizeof(array) / sizeof(array[0]) dá o número de elementos
  • Cuidado: sizeof não funciona como esperado com arrays passados como parâmetros de função!

void funcaoTraicoeira(int arr[]) {
    // Isso NÃO dá o tamanho do array!
    size_t tamanho = sizeof(arr) / sizeof(arr[0]);
    // arr decai para um ponteiro aqui
}
                

sizeof em funções: onde os corajosos programadores C++ vão para se aventurar!

Processamento e Iteração sobre Arrays


int temperaturas[] = {22, 24, 19, 25, 23, 20, 18};
int tamanho = sizeof(temperaturas) / sizeof(temperaturas[0]);

for (int i = 0; i < tamanho; i++) {
    cout << "Dia " << i+1 << ": " << temperaturas[i] << "°C" << endl;
}

// Para os aventureiros: range-based for loop
for (int temp : temperaturas) {
    cout << temp << "°C ";
}
                

Iteração: porque às vezes é preciso passar por todos os elementos para achar a resposta... ou a saída!

Passando Arrays como Parâmetros em C++

Uma introdução às técnicas e conceitos fundamentais.

Por que passar arrays para funções?

  • Reutilização de código
  • Organização e modularidade
  • Facilita a manipulação de grandes conjuntos de dados

Sintaxe Básica


void minhaFuncao(int arr[], int tamanho) {
    // Código para manipular o array
}

int main() {
    int meuArray[5] = {1, 2, 3, 4, 5};
    minhaFuncao(meuArray, 5);
    return 0;
}
                

O array é passado por referência automaticamente!

Breve Introdução aos Ponteiros

  • Um ponteiro é uma variável que armazena o endereço de memória de outra variável
  • Arrays têm uma relação especial com ponteiros em C++
  • Quando passamos um array para uma função, na verdade estamos passando um ponteiro para seu primeiro elemento
  • Este tema será abordado com mais profundidade em aulas futuras

Decaimento para Ponteiro

  • Quando passado para uma função, um array "decai" para um ponteiro
  • A função recebe apenas o endereço do primeiro elemento
  • Por isso, precisamos passar o tamanho separadamente

Alternativas de Sintaxe


// Estas declarações são equivalentes:
void func1(int arr[], int tamanho);
void func2(int* arr, int tamanho);
                

Ambas as formas são comumente usadas e aceitáveis

Modificando o Array


void dobrarElementos(int arr[], int tamanho) {
    for (int i = 0; i < tamanho; i++) {
        arr[i] *= 2;
    }
}
                

As modificações afetam o array original!

Exemplos e Algoritmos

Exemplo: Somando Elementos de um Array


#include 

int somaArray(const int arr[], int tamanho) {
    int soma = 0;
    for (int i = 0; i < tamanho; i++) {
        soma += arr[i];
    }
    return soma;
}

int main() {
    int numeros[] = {1, 2, 3, 4, 5};
    int resultado = somaArray(numeros, 5);
    std::cout << "A soma é: " << resultado << std::endl;
    return 0;
}
                

Tente você mesmo: escreva uma função que calcula a média dos valores em um array!

Busca em Array de Inteiros

Valor a buscar: 5

Troca de Valores em Array C++

Temp

Boas Práticas

  • Sempre passe o tamanho do array junto com o array
  • Se não quiser modificar o array, use const
  • Lembre-se: a função não sabe o tamanho do array por si só

Resumo de Funções e Arrays

  • Passar arrays como parâmetros é simples e poderoso
  • Lembre-se de passar o tamanho junto com o array
  • As modificações na função afetam o array original
  • Ponteiros e arrays têm uma relação próxima em C++
  • Praticar é a chave para dominar este conceito!

Conclusão

  • Arrays são como caixas de chocolates: você nunca sabe o que vai encontrar (a menos que tenha inicializado corretamente).
  • Indexação começa do zero: uma lição de humildade em cada acesso.
  • sizeof é seu amigo, mas cuidado com suas travessuras em funções.
  • Iteração é a chave: às vezes, para entender o todo, você precisa olhar cada parte individualmente.

Lembre-se: com grandes arrays vêm grandes responsabilidades!