Ponteiros e Arrays 🎭
Aula 11 - A Relação Secreta
O que vamos aprender hoje? 📅
- O array como ponteiro
- Aritmética de Ponteiros
- Navegando na Memória
- Array Notation vs Pointer Notation
- Performance e Eficiência
O Segredo do C 🤐
Em C, o nome de um vetor é um ponteiro constante para o seu primeiro elemento.
Aritmética na Prática ➕
Somar 1 ao ponteiro move o endereço para o próximo elemento, não para o próximo byte.
p + 1-> Próximo int (4 bytes depois)p + 2-> Dois ints depois (8 bytes depois)
Notações Equivalentes ↔️
| Notação de Array | Notação de Ponteiro |
|---|---|
v[0] |
*v |
v[1] |
*(v + 1) |
v[i] |
*(v + i) |
&v[i] |
v + i |
Percorrendo um Vetor 🔁
Incremento de Ponteiro ⬆️
Podemos mover o ponteiro em si:
Arrays em Funções 📦
Quando passamos um array para uma função, passamos apenas o endereço do primeiro elemento.
Por isso o sizeof() não funciona dentro da função!
Performance ⚡
Aritmética de ponteiros costuma ser mais rápida em loops críticos, pois evita a multiplicação índice * tamanho_do_tipo a cada passo.
Strings são Arrays... 🔡
...logo, strings são ponteiros!
Perigos: Out-of-bounds 🚫
A aritmética de ponteiros permite que você "saia" do vetor facilmente.
Desafio da Aula 🚀
Crie o "Varredor de Memória": Preencha um vetor e use aritmética de ponteiros para percorrê-lo e encontrar o maior valor.
Próxima Aula 🔜
Aula 12 - Estruturas (Structs)
Como criar nossos próprios tipos de dados complexos? 🏗️
Dúvidas? 🤔
Mantenha a calma e confie na aritmética!