Sei sulla pagina 1di 25

Unidade 1

Algoritmos e Estruturas de
Dados
iStock 2018
Webaula 1
Ponteiros

1
Nesta webaula, conheceremos um pouco mais
sobre os seguintes tópicos:
• Endereço de memória.
• Introdução a ponteiros. Elaborada pelo autor

• O uso de ponteiros na linguagem de


programação C.

2
Caro aluno, bem-vindo à webaula na qual estudaremos o
conceito de ponteiros no mundo da programação, bem como
sua aplicação na linguagem C.
Os ponteiros são amplamente utilizados para acessar áreas da
memória através de referências a endereços. Seu uso na
linguagem de programação C contribui para tornar essa
ferramenta uma potência no mundo da programação.

3
Como você já deve ter ouvido falar, muitos Para entendermos ponteiros devemos
sistemas operacionais, compiladores e antes compreender como funciona a
linguagens de programação são construídos memória de trabalho do computador, ou
inteiramente ou parcialmente na linguagem C, simplesmente memória RAM.
e isso só é possível graças aos ponteiros.
Portanto, vamos entender esse poderoso
elemento.

4
Organização e identificação dos bytes
A memória RAM é o local utilizado pelos
softwares para armazenamento temporário de
dados, sendo organizada como uma sequência
de bytes. A identificação de cada byte na
memória ocorre pelo seu endereço, conforme
ilustra a figura a seguir:

Elaborada pelo autor

5
Cada constante ou variável na memória ocupa um espaço
que pode variar de 1 a N bytes. Por exemplo, uma variável do
tipo char ocupa 1 byte; uma variável do tipo inteira (int) ocupa
4 bytes, enquanto uma variável do tipo double ocupa 8 bytes.
Cada variável alocada está relacionada ao endereço do byte
na memória. Porém, caso a variável ocupe mais que 1 byte, o
endereço será do primeiro byte. Por exemplo, ao alocarmos a
variável int x, ela ocupará uma sequência de 4 bytes,
entretanto seu endereço será o do primeiro byte.

6
Na linguagem C utilizamos o operador (&) para conhecer e acessar o endereço de uma variável
na memória. Veja um exemplo de sua utilização, com seu respectivo resultado:

Elaborada pelo autor

7
Alocação da variável x na memória
No exemplo anterior, a linha 4 imprime o valor
guardado na variável x, ou seja, 2. Já a linha 5
imprime um valor inteiro referente ao
endereço, do primeiro byte, da variável x na
Elaborada pelo autor
memória (lembrando que uma variável inteira
ocupa 4 bytes).
A figura, a seguir, ilustra a organização na
memória desse exemplo:

8
Definição de ponteiros
Agora que sabemos que a memória se divide Ponteiro, por definição, é um tipo
em pequenas partes e que cada parte está especial de variável que armazena
associada a um endereço, podemos entender o endereços (MANZANO, 2015).
que é um ponteiro:

9
Esquema para ponteiros
Quando o ponteiro armazena o endereço de
uma variável, dizemos que ele “aponta” uma
variável. Por exemplo, se o ponteiro p1
armazena o endereço da variável x, dizemos
que “p1 aponta para x”. De modo mais formal,
é o mesmo que afirmarmos que “p1 é uma Elaborada pelo autor
referência à variável x”, conforme ilustra a
figura a seguir:

10
A partir do esquema para ponteiros apresentado, podemos fazer algumas observações e
inferências. Explore a galeria para conhecê-las:

p1 é uma variável (especial), portanto também ocupa um espaço na memória;

11
Cenário para utilização de Para alocar memória dinâmica (funções malloc,
calloc, etc.).
ponteiros
Os ponteiros podem ser utilizados em qualquer Para fazer referências a listas, filas, enfim,
situação, pois, por definição, também são estruturas de dados.
variáveis. Porém, existem duas situações em
que sua utilização se faz necessária:

12
Esquema de alocação de memória e ponteiros
Em ambos os casos, a justificativa está no fato
de serem usadas funções para reservar
determinado espaço na memória.
Para acessar esse espaço é necessária uma
variável que aponte para o local, conforme
ilustra a figura a seguir:

Elaborada pelo autor

13
Utilização de ponteiros na linguagem C
Como há vários tipos de ponteiros, o computador precisa identificar de que tipo de ponteiro
nós precisamos. Criar um ponteiro na linguagem C é semelhante a criar uma variável qualquer,
portanto precisamos informar o tipo e o nome. O nome da variável deve ser precedido de um
asterisco (*) para identificar que a variável é um ponteiro.

Sintaxe de declaração de ponteiro: tipo *nome ou, ainda, tipo* nome. Exemplos:

int *p1;
float *p2;
char *p3;

14
Após a declaração, precisamos especificar para Na linha 1 é declarada uma variável x do
onde esse ponteiro aponta, que poderá ser tipo float. O ponteiro na linha 2 também
uma variável específica ou uma região da é declarado float, pois é obrigatório que
memória alocada por funções específicas. o ponteiro seja do mesmo tipo da
Vejamos um exemplo: variável para a qual ele apontará. Na
linha 3 é feita a ligação entre o ponteiro
1. float x;
e a variável x. Observe que foi usado &x
2. float *ptr;
para armazenar em ptr o endereço da
3. ptr = &x;
variável x.

15
Para finalizar a webaula, vamos implementar em C o uso do ponteiro ptr.

Elaborada pelo autor

16
Observe o resultado:

Elaborada pelo autor

17
A novidade nesse código são as linhas 9 e 10. A linha 9
imprime o conteúdo da variável ptr, que, por ser um ponteiro,
imprime um endereço, no caso, o mesmo endereço de x. Já a
linha 10 imprime o conteúdo do local para o qual o ponteiro
aponta, ou seja, o conteúdo da variável x. Perceba que
utilizamos o asterisco (*) na frente do nome da variável
ponteiro.

18
Finalizando
Para concluir a webaula, explore a galeria para conhecer os principais pontos que você precisa
assimilar após esse estudo:

•Cada variável possui um endereço na memória.

• Variáveis são utilizadas para armazenar valores − inteiros, ponto flutuante,


caractere, etc.

• Existe um tipo especial de variável utilizada para armazenar endereços de 


memória: o ponteiro.

19
Para uma melhor compreensão do conteúdo apresentado, assista a três videoaulas do
professor André Backes. “[C] Aula 55 - Ponteiros - Parte 1- Conceitos”:

[C] Aula 55 - Ponteiros - Parte 1- Conceitos

Disponível em: <https://www.youtube.com/watch?v=SJzd9x2S2yg&t=375s>. Acesso em: 27 fev. 2018.

20
Para uma melhor compreensão do conteúdo apresentado, assista a três videoaulas do
professor André Backes. “[C] Aula 56 - Ponteiros - Parte 2 - Operações”:

[C] Aula 56 - Ponteiros - Parte 2 - Operações

Disponível em: <https://www.youtube.com/watch?v=cg1mnWupbTE>. Acesso em: 27 fev. 2018.

21
Para uma melhor compreensão do conteúdo apresentado, assista a três videoaulas do
professor André Backes. “[C] Aula 57 - Ponteiros - Parte 3 - Ponteiro Genérico”:

[C] Aula 57 - Ponteiros - Parte 3 - Ponteiro Genérico

Disponível em: <https://www.youtube.com/watch?v=bqw-GebrvEU>. Acesso em: 27 fev. 2018.

22
Você já conhece o Saber?
Aqui você tem na palma da sua mão a biblioteca digital para
sua formação profissional.
Estude no celular, tablet ou PC em qualquer hora e lugar
sem pagar mais nada por isso.
Mais de 450 livros com interatividade, vídeos, animações e
jogos para você.
Android: 
https://goo.gl/yAL2Mv

iPhone e iPad - IOS:


https://goo.gl/OFWqcq

23
Bons estudos!
24

Potrebbero piacerti anche