1 of 17

Programação I

Ponteiros

Capítulo 12

2 of 17

Tipo

Um tipo define o conjunto de valores válidos para aquela variável.

Exemplos:

int : números inteiros

float : números reais

char : caractere

...

3 of 17

Ponteiro

Um tipo capaz de armazenar endereços e memória

Usado para manipular diretamente a memória

4 of 17

A memória

  • Código: área onde o programa compilado reside;
  • Global: variáveis globais
  • Pilha: parâmetros de funções e variáveis locais
  • Heap: variáveis dinâmicas

5 of 17

6 of 17

Ponteiros

Se um ponteiro guarda o endereço de memória, como saber o endereço de memória de uma variável?

OPERADOR &

Endereço da variável x:

&x

7 of 17

Declaração

<tipo do conteúdo armazenado no endereço de memória> * <identificador>;

8 of 17

Desafio

Escreva uma função que troque o conteúdo de duas variáveis.

#include <stdio.h>��void troca(int x, int y)�{� // implementar�}��int main()�{� int a, b;� a = 5;� b = 3;� troca(a,b);� printf("a=%d, b=%d\n", a, b);� return 0;�}

9 of 17

Roteiro

  1. Tentar sem ponteiro
    1. Funcionou? Por que?

  • Com ponteiro

10 of 17

Exercício: ordenar três variáveis inteiras

Use a função de trocar valores usando ponteiros.

11 of 17

Solução

12 of 17

Quiz

13 of 17

Quiz

void exemplo2()�{� int firstvalue, secondvalue;� int * mypointer;� mypointer = &firstvalue;� *mypointer = 10;� mypointer = &secondvalue;� *mypointer = 20;� printf("%d\n", firstvalue);� printf("%d\n", secondvalue);�}

14 of 17

Valor NULL

15 of 17

Exercícios do The Huxley

Colar

Arrays de pares e ímpares

Maior elemento pseudoaleatório

16 of 17

Quiz

17 of 17

Quiz