Documente Academic
Documente Profesional
Documente Cultură
Ponteiros
Conceitos bsicos
Declarao de ponteiros
Inicializao de ponteiros
Ponteiros em ao
Ponteiros e tipos de dados
Ponteiros e vetores
Aritmtica dos ponteiros
Conceitos bsicos
Conceitos bsicos
101
102
5000
Programao Estruturada
5001
5002
Conceitos bsicos
Programao Estruturada
Conceitos bsicos
1000
1001
ch
1002
5000
5001
5002
Conceitos bsicos
A
1000
1001
1002
5000
5001
5002
Conceitos bsicos
Os ponteiros so um mecanismo
particularmente flexvel de manipulao de
dados, pois permitem manipular
diretamente dados contidos em endereos
especficos de memria.
Suponhamos ento, que tnhamos ao nosso
dispor um ponteiro denominado ptr.
Programao Estruturada
Conceitos bsicos
ch
A
1000
1001
1002
5000
5001
5002
Programao Estruturada
Conceitos bsicos
ch
5000
1000
1001
1002
5000
Programao Estruturada
5001
5002
10
Declarao de ponteiros
Programao Estruturada
11
Inicializao de ponteiros
p = &a;
Programao Estruturada
12
Ponteiros em ao
1000
1001
1002
3000
3001
3002
1002
1000
1001
1002
3000
Programao Estruturada
3001
3002
13
Ponteiros em ao
a
ptr
*ptr
1002 /* endereo de a */
5
/* contedo que est no endereo 1002 */
14
Ponteiros em ao
equivalente a
printf(%d, *ptr);
Programao Estruturada
15
Ponteiros em ao
E se executssemos a instruo:
*ptr = 20; /* colocar 20 no apontado por ptr */
Qual seria a sada de:
16
Ponteiros em ao
Valor
&a
1002
20
&b
3001
ptr
3001
&ptr
1000
*ptr
20
Programao Estruturada
17
Ponteiros em ao
p2 = &b; ou
p2 = ptr; /* SEM ENDEREO!!! pois ptr j contm o
endereo de b */
Programao Estruturada
18
Auto avaliao
#include <stdio.h>
int main ()
{
int num,valor;
int *p;
num=55;
p=#
valor=*p;
printf ("\n\n%d\n",valor);
printf ("Endereco para onde o ponteiro aponta: %p\n",p);
printf ("Valor da variavel apontada: %d\n",*p);
return(0);
}
Programao Estruturada
19
Auto avaliao
#include <stdio.h>
int main ()
{
int num,*p;
num=55;
p=#
printf ("\nValor inicial: %d\n",num);
*p=100;
printf ("\nValor final: %d\n",num);
return(0);
}
Programao Estruturada
20
Programao Estruturada
21
22
char a = Z;
int n = 1234;
float pi = 3.1415;
12
34
1002
1003
1000
1001
pi
1004
1005
1006
3.
141
1007
1008
1009
Programao Estruturada
1010
...
23
Programao Estruturada
24
Programao Estruturada
25
Programao Estruturada
26
O endereamento de um ponteiro
sempre realizado pelo operador *
(asterisco).
27
12
34
1002
1003
1000
sizeof(float)
sizeof(int)
sizeof(char)
1001
pi
1004
1005
1006
3.
141
1007
1008
1009
1010
ptr_a
ptr_n
ptr_pi
1000
1002
1006
Programao Estruturada
...
28
Auto avaliao
c)
d)
e)
*int pti;
*pti;
&i;
int_pti pti;
int *pti;
Programao Estruturada
29
Auto avaliao
Seja a seguinte seqncia de instrues em um programa C:
int *pti;
int i = 10;
pti = &i;
Qual afirmativa falsa?
a)
b)
c)
d)
e)
Programao Estruturada
30
Ponteiros e vetores
Os ponteiros so normalmente
utilizados no tratamento e na
manipulao de vetores e strings.
O nome de um vetor corresponde ao
endereo do seu primeiro elemento,
isto , se v for um vetor ento
v == &v[0].
Programao Estruturada
31
Ponteiros e vetores
Embora o nome de um vetor seja um
ponteiro para o primeiro elemento do
vetor, esse ponteiro no pode ser
alterado durante a execuo do
programa a que pertence. Se tal fosse
possvel, estaramos nos arriscando a
perder o vetor previamente declarado.
Programao Estruturada
32
Ponteiros e vetores
Exemplo:
ptr = &v[0];
ptr = v;
Programao Estruturada
33
Ponteiros e vetores
34
Ponteiros e vetores
NO ESQUEA: Os elementos de
um vetor ocupam posies
consecutivas de memria, sendo o
nome do vetor igual ao endereo do
primeiro elemento, isto , o menor
endereo do vetor.
Programao Estruturada
35
Aritmtica de ponteiros
Operaes possveis:
incremento
decremento
diferena
comparao
Programao Estruturada
36
Aritmtica de ponteiros
Incremento
ptr++;
ptr = ptr + 2;
ptr += 4; /* Se ptr apontar para um float avana 4 * 4 = 16 bytes */
Programao Estruturada
37
Aritmtica de ponteiros
...
5.
6.
7.
8.
9.
10.
11.
...
Programao Estruturada
38
Aritmtica de ponteiros
Decremento
Programao Estruturada
39
Aritmtica de ponteiros
Exerccio
40
Aritmtica de ponteiros
Diferena
41
Aritmtica de ponteiros
Exerccio
42
Programao Estruturada
43
Programao Estruturada
44
Programao Estruturada
45
Programao Estruturada
46
Programao Estruturada
47
Programao Estruturada
48
&t[0]
t
Programao Estruturada
49
Programao Estruturada
50
Programao Estruturada
51
Programao Estruturada
52
Programao Estruturada
53
Alocao de memria
Programao Estruturada
54
55
56
Programao Estruturada
57
Programao Estruturada
58