Ponteiros - IC

Propaganda
MC102 - Algoritmos e Programação de
Computadores
14ª Aula - Ponteiros
Amanda Meincke Melo
Instituto de Computação/Unicamp
1º Sem/2005
Roteiro
Comentários
Laboratório 06
Laboratório 07
Relembrando mais uma vez...
Ponteiros
O que são?
Representação na memória
Representação na linguagem C
Por quê?
Exemplos
27/04/2005
2
Relembrando mais uma vez...
Uma variável está associada a uma
posição de memória e qualquer referência
a ela significa um acesso ao conteúdo de
um pedaço de memória cujo tamanho
depende de seu tipo
Nome
27/04/2005
Endereço ou
Referência
Conteúdo
3
Ponteiros – O que são?
Um ponteiro, ou apontador, é uma
variável que contém o endereço de
outra variável.
Nome
Endereço ou
Referência
Conteúdo
O conteúdo é um
endereço de memória
27/04/2005
4
Uma representação da memória
letra (0x240ff5f)
p (0x240ff58)
‘a’
0x240ff5f
.
.
.
27/04/2005
A variável letra é do tipo char
A variável p é um apontador
Neste caso, dizemos que p
“aponta” para letra, sendo
possível ler e alterar o
conteúdo de letra via p.
5
Declaração: tipo *identificador;
Representação na linguagem C
#include <stdio.h>
int main () {
char letra = 'a';
char *p; /* Declaração de um ponteiro: neste caso, informa que p é um ponteiro
que deve apontar para uma variável do tipo caracter (seu conteúdo ainda é
desconhecido) */
p = &letra; /* Atribuição de um endereço a um ponteiro: neste caso, p recebe o
endereço da variável letra, ou seja, p passa a apontar para a variável letra */
printf (“%c\t”, *p); /* Exibe o conteúdo da variável letra */
*p = ‘b’; /* Altera o conteúdo da variável letra */
printf (“%c\n”, letra);
return 0;
}
27/04/2005
6
No exemplo anterior:
char *p;
declara que p é um apontador para uma variável
do tipo char
*p
Na declaração, informa que a variável p é um
apontador
No uso, possibilita acessar a posição de memória
(o endereço) da variável que p aponta, ou seja,
pode-se ler e alterar o conteúdo da variável que p
aponta
&letra
Representa o endereço da variável letra
27/04/2005
7
Se quisermos indicar que um ponteiro não
aponta para uma variável, podemos atribuir a
ele um “valor nulo”:
p = NULL;
Essa informação pode ser útil em expressões
condicionais:
If (p == NULL) {
}
else {
}
27/04/2005
8
Ponteiros – Por quê?
Eventualmente, torna-se necessário que uma
função dê acesso ao seu espaço de memória a
outra função. Exemplo:
scanf (“%c”, &letra);
O espaço de memória utilizado por um
programa pode ser reservado (e liberado)
dinamicamente, via ponteiros, diferentemente
do que temos feito até o momento.
27/04/2005
9
Em outras palavras...
1. Provêem uma forma de comunicação entre
funções
2. Podem auxiliar na construção de programas
que utilizam memória de forma ponderada,
conforme sua necessidade de processamento
3. Ainda...
 A implementação de alguns algoritmos
computacionais são mais eficientes com o uso de
ponteiros
27/04/2005
10
Exemplos
(na lousa)
Outros exemplos estão disponíveis no
Ensino Aberto
27/04/2005
11
Download