Você está na página 1de 13

Dulce

1 A

2009



e Mota & Ana
P
e
Ano 1 S
9/2010
a Almeida I
Programao
em C
Arit
Semestre
ISEP
o
Apo
R
tmtica
ontado
Reviso
a da ap
ores
o
pontadoores

1






Dulce

Apo

Rev

Os a
realiz
torna
A inf
sequ
RAM

po
fa

RUA
CASA
FAM

De s
espa

Def

No
duas
Apon
arma
Um
dete
e Mota & Ana
P
e
ontado
viso
pontadores
zadas com
a-se mais si
formao
encial de lo
pode ser v
ossvel esta
amlias.
A M
AS E
n
LIAS I
d
m
sublinhar
ao de mem
finio
existe um
s seguintes
ntador u
azenada a
apontado
erminado ti
a Almeida I
Programao
em C
ores
s so muito
este tipo d
imples, efici
armazenad
ocalizaes
vista como

100
abelecer u
Memria RA
Endereos,
necessidad
nformao
de element
menos espa
que indep
mria aloca
ma defini
s que so e
uma variv
informa
or uma
ipo.
ISEP
o
usados em
de elemento
iente e com
a em mem
referenciad
uma sequ

101 10
uma analog
AM.
tm tam
es das fam
o, depende
tos), ocupa
ao de me
pendentem
ado) o end
o para ap
equivalente
vel que pe
o que se p
varivel
C, em part
o e ainda
mpacto do q
ria RAM, s
das pelos se
ncia de Byte
02 20
gia com a
anhos ma
mlias que n
endo do se
am casas m
emria.
mente do
dereo n
pontador, p
es.
ermite gua
pretende m
que apo
te porque m
porque com
ue o obtido
endo esta c
eus respect
es consecut
000 200
as casas d
aiores ou
nela habita
eu tamanho
maiores ou
tamanho
nico.
por isso, t
ardar o en
manipular.
onta para
muitas taref
m a sua uti
o de outras
constituda
tivos endere
tivos.
1
e uma rua
menores d
am.
o (no caso
u mais peq
da casa (
omaremos
dereo on
outra va
fas s podem
lizao o c
formas.
por um con
eos. A mem
a, onde m
dependend
das famli
quenas, ma
(quantidad
s como ba
de se enc
arivel de

2
m ser
digo
njunto
mria
moram
do da
ias n
ais ou
de de
se as
contra
um
Dulce




Dec

Sabe
um e
tamb
nece
A de
para
Si

on



Ex
in
ch

I nic

A inic
atrav
ende
um a
atrib
Os d
&
*
e Mota & Ana
P
e
clarao
emos que u
endereo d
bm ocupa
essita de ser
clarao de
onde apon
ntaxe:
tipo * pt
nde
ptr - nom
tipo tip
* - indica
xemplos:
t * ptr; // d
har * p; // d
cializa
cializao d
vs da con
ereo de um
apontador o
udo o ende
ois operado
Fornece o
dados exce
elemento)
Fornece o
para efect

a Almeida I
Programao
em C
o
m apontado
e outra va
espao. De
r feito.
e apontador
ta o aponta
tr
me da variv
po de dados
a que se tra
declarao d
declarao d
o
e apontado
stante sim
ma determin
o endereo d
ereo de me
ores fundam
endereo d
epto arrays

contedo d
uar a decla

20
100 10
ptr
ISEP
o
or uma va
rivel, por
este modo,
res obriga
ador e o nom
vel do tipo
s para o qua
ata de uma
de um apon
de um apon
ores deve se
blica NUL
nada varive
de nenhum
emria nm
mentais em
e memria
s (neste cas
da posio d
rao de ap
000

01 102
r

arivel capa
isso ter q
o passo da
colocao
me da vari
apontador,
al a varive
varivel do
ntador para
ntador para
er feita atra
LL. No prim
el enquanto
a varivel e
mero ZERO.
apontadore
do seu ope
o a defini
de memria
pontadores.

2000
x
az de guard
que estar e
declarao
de um aste
vel que lhe
el ptr aponta
o tipo apont
uma variv
uma variv
avs do ope
meiro caso,
o que no se
em especfic
es so:
erando, utiliz
o do array
a referida p


2001
dar um nm
m memria
o de um apo
erisco entre
e foi atribud
ar,
ador.
vel do tipo i
vel do tipo c
erador de En
, estamos
egundo serv
co, mais pre
za-se com t
indica a po
pelo seu ope

mero, neste
a e sendo a
ontador tam
e o tipo de d
da.
nteiro
char
ndereo de
a referir-no
ve para atrib
ecisamente
todos os tip
osio do se
erando. Util

3
caso,
assim
mbm
dados
& ou
os ao
buir a
-lhe
pos de
eu 1
liza-se
Dulce


Ex
int
int
int
Estes
assoc
Cons


e Mota & Ana
P
e
Na declara
indica a v
xemplos:
t a = 10;
t *ptr = NU
t *p = & a;
s operadore
ciatividade
sideraes s
Um ap
Existe
aponta
O ende
em me
Um ap
no ap
Um ap
lo
c
v
Um ap
seguin
o Arm
o Ob
o Ad
o Su
efe
o Pa
o m
Exempl
int *a, b

a Almeida I
Programao
em C
ao este
varivel ap
ULL;
es tm ma
da direita
sobre a man
pontador u
um tipo de
ar sempre p
ereo de um
emria.
pontador va
pontar para
pontador tem
ocalizao
contedo,
valor indire
pontador
tes opera
mazenar o
bter ou alte
dicionar ou
ubtrair ou
ectuar uma
ss-lo com
mesmo tipo
os:
, q;
ISEP
o
smbolo ind
pontada po
aior preced
a para a esq
nipulao de
um endere
e dados as
para um obj
ma varivel
azio deve co
nada.
m trs atrib
o, onde ele
o que se gu
ecto, o que
um tipo d
es:
o endereo
erar o cent
subtrair u
adicionar
compara
mo argumen
dica o tip
or
ncia que
querda.
e apontado
o.
sociado ao
ecto desse
sempre o
onter o valo
utos distint
est guarda
uarda ap
e guardad
de dados e
de um obec
tedo desse
um inteiro
outro apon
o
nto para um
po apontad
os operado
res:
endereo,
tipo.
o menor do
or da const
os:
ado &ap
p
do no ender
especfico,
cto do tipo
e endereo
ntador p/ o
ma funo q
do; nas o
ores aritmt
por isso o
s endereos
tante NULL
reo aponta
sendo ape
p/ onde apo
o mesmo ti
que espere
outras instr
ticos bsico
apontador
s que esta
, o que sig
do por p
nas possve
onta
ipo de dad
um apontad

4
rues
os e a
r deve
ocupa
gnifica
*ap
eis as
os ou
dor p/
Dulce

a a
a =
q = *

int a,
a = 2
b = *
Um
apon

int a,
a
a
ap =
app
re

Se ex
Conc
*ap
*app
**ap

Exer
I - S
apon
outra
e Mota & Ana
P
e
a uma va
contm o
endereo d

&b a tom
conte
*a q tom
, b, *q = &
2; atribu
*q; atrib
apontador
ntador.
, *ap, **ap
declara-se
apontador p
&a;
= ≈
esulta app a
xistir em a o
cluindo:
a
p ap
pp *ap
rccios:
Suponha q
ntadores pa
as ilegais.
a Almeida I
Programao
em C
arivel do t
endereo
de um inteir
ma o valor
do, ou seja
ma o valor d
&a; inicial
se que q
i o valor 2 a
ui a b o con
pode cont
pp;
que a um
para apontad

a apontar pa
o valor 10 e
a
ue na mem
ra int, p e q
ISEP
o
tipo aponta
de uma va
ro
do endere
a *a = b
a varivel q
liza q com o
q aponta pa
a a
ntedo da p
ter o ende
m inteiro, a
dores para
ara ap e est
app
ento **app
mria do c
q. J ustifiqu
ador para in
arivel do
o da variv
que est no
o endereo
ra a.
posio para
ereo de q
ap um ap
inteiros
ta a aponta
ap
p = 10;

computador
e porque
nteiro, ou s
tipo inteiro
vel b, ou se
endereo d
de memri
a onde q ap
qualquer va
pontador pa
r para a
a
r existe um
que as exp
seja, a u
o, ou simp
eja a o en
de a, ou sej
ia da variv
ponta, ou se
arivel, inc
ara inteiros
ma varivel
presses ab
uma varive
plificando, a
ndereo e *
ja q = b
vel a, ou sej
eja o valor 2
cluindo de
e que app
inteira i e
baixo so le

5
el que
a o
*a o
ja diz-
2
outro
um
e dois
gais e
Dulce


II A
print

#i nc

voi d
{
i nt

cl r s
i nde
pt 1
pt 2
pr i n
*pt 1
pr i n
get c
}


/* Re

O va
O va

*/







e Mota & Ana
P
e
Analise o c
f().
cl ude " st
d mai n( )
i ndex, *
scr ( ) ;
ex = 39;
= &i ndex
= pt 1;
nt f ( " O va
1 = 13;
nt f ( " O va
ch( ) ;
esultado da
lor 39 39
lor 13 13
a Almeida I
Programao
em C
digo do seg
t di o. h"

*pt 1, *pt

x;
al or %d

al or %d
execuo
39
13
ISEP
o
p
p=
*p
*p=
p=
p=
*p
guinte prog

t 2;

/
d %d %d\ n
/ *
d %d %d\ n
=i Ile
=q Le
p=q Ile
=*q Le
*&q Le
=*q Ile
=&i ile
grama e ind

/ * qual q
* o ende
n" , i ndex
i st o al t
n" , i ndex
egal
egal
egal
egal
egal
egal
egal
ique o resu
uer val o
r eo de
, *pt 1,
er a o va
, *pt 1,
ltado de ca
r numer i c
i ndex */
*pt 2) ;
l or de i n
*pt 2) ;
da instru
co */
ndex */

6
o
Dulce


Ilustr

pt1
pt2



pt1
pt2



pt1
pt2

Oper

O es
arqu
Os t
nme
Bytes
infor
sizeo
deter


x
1000
sizeo


e Mota & Ana
P
e
rao:
.
.
2
.
.
2
.
.
2
rador sizeo
spao de a
itectura das
ipos de da
ero de Byte
s de mem
mao -lhe
of um ope
rminado tip

b
0 10
of(char)
a Almeida I
Programao
em C
inde
inde
inde
of
rmazename
s mquinas.
ados da ling
es em mem
mria tero
e dada qua
erador de C
po ocupam n
n
001 100
ISEP
o
39
ex
39
ex
13
ex
ento de va
.
guagem C
mria e por
o de cons
ndo fazemo
C que devo
numa deter

27500
02 1003
sizeof(int)

riveis dep
(char, int
essa razo
siderar par
os a sua dec
olve o nme
rminada arq


3 ....

pende do ti
t, float e d
os apontad
ra uma de
clarao.
ero de Byte
quitectura:
pi
2000
po de dad
double) oc
dores devem
eterminada
es que uma

3.14
2001
sizeof(f
os e da pr
cupam dife
m saber qu
varivel.
a varivel o

15
2002 20
float)

7
rpria
erente
antos
Essa
u um
003
Dulce

Apo

O no
ou se

O no
corre
apon
exec

Assim


Ou s

Exist
Para





Para




Quan
basta
todos
poss

Exem

int ve
lerDa

e Mota & Ana
P
e
ontadore
ome de um
eja vector =
ome de um
espondendo
ntador tem
uo do pro
m:
char vecto
in n;
ap = &vec
ap + n ==
*(ap + n)

*(ap + n)
eja:
tem duas fo
aceder aos
Com
Com
aceder aos
Com
Com
ndo se pret
a passar o
s os outros
vel o fcil a
mplo :
ec[10];
ados(vec,10
a Almeida I
Programao
em C
es e Vec
vector se
== &vector[
vector no
o a um apon
em particu
ograma a q
or[10], *ap;
ctor[0];
= &vector[n
== vector[

ormas de ac
s contedos
ndices vec
apontadore
s endereos
ndices &ve
apontadore
tende pass
endereo d
s elementos
acesso a tod
0); ou
ISEP
o
ctores
empre avali
[0].
o mais que
ntador para
ular a cara
ue pertence

ap
];
[n];
*(vector
ceder aos el
s dos vrios
ctor[0]; vect
es *vector;
s onde esto
ector[0]; &v
es vector; (v
sar a totalid
do seu prim
s se encont
dos os outro
lerDados
iado como o
e o endere
a o primeiro
acterstica d
e, caso cont
p = vector;
+ n)
ementos do
elementos
tor[10] ou v
*(vector +
o armazena
vector[10] o
vector +10)
dade de um
meiro elem
tram em po
os elemento
s(&vec[0],10
o endereo
o do prime
o elemento
de no pod
trrio, pode

ve
os vectores.
utiliza-se:
vector[20]
10) ou *(ve
ados os vrio
ou &vector[
) ou (vector
m vector pa
ento (vecto
osies de
os.
0);
do seu pri
eiro elemen
desse vecto
der ser alte
eramos perd
ector[n]
.
ector + 20)
os elemento
20]
r + 20)
ara dentro
or ou &ve
memria c
meiro elem
nto desse ve
or. Contudo
erado duran
der o vecto
os utiliza-se
de uma fu
ctor[0]), po
contguas, s

8
mento,
ector,
o este
nte a
or.
e:
uno
orque
sendo
Dulce

O no
vecto
forne

Exem

#i nc
mai n
{
ch
pr
pr
pr
pr
pr
pr

}

Outu

A, A
N,
A, A

e Mota & Ana
P
e
ome do vec
or e no o
ece o ender
mplo 1
cl ude <st
n( )
ar vect or
i nt f ( %c
i nt f ( %c
i nt f ( %c
r i nt f ( %p
i nt f ( %p
i nt f ( %p
uput:
A, A
N, N
A, A
a Almeida I
Programao
em C
ctor como o
tamanho
reo dessa p
t di o. h>
r [ 4] = A
, %c, %c
, %c, %c
, %c, %c
p = %p\ n
= %p\ n,
= %p\ n,
ISEP
o
operando do
do apontad
posio.
ANA, *ap
%c \ n,
%c \ n,
%c \ n,
, &vect o
, &vect or
, &vect or
o operador
dor, e o op
p=vect or ;
vect or [ 0
vect or [ 1
vect or [ 2
or [ 0] , ( a
r [ 1] , ( ap
r [ 2] , ( ap
sizeof for
perador end
;
0] , ap[ 0]
1] , ap[ 1]
2] , ap[ 2]
p+0) ) ;
p+1) ) ;
p+2) ) ;
rnece o tam
dereo no
, *( ap+0
, *( ap+1
, *( ap+2
manho de to
nome do v
) ) ;
) ) ;
) ) ;

9
odo o
vector
Dulce

Exe

O pro
vecto
elem

#i nc
#i nc

voi d
{
char
i nt

c
s

n
m
p

n
m
p

p
p
p

f

a
p
p
g
}

/* Re

A pri
A Seg
A Te
A Qu
A Qu
A Sex


e Mota & Ana
P
e
mplo 2
ograma a se
ores com n
mento no vec
cl ude " st
cl ude " st
d mai n( )
r st r g[ 40
*apt , l
cl r scr ( ) ;
st r cpy( st
n = st r g[
m= *st r g
pr i nt f ( " A
n = st r g[
m= *( st r g
pr i nt f ( " A
pt = st r g
pr i nt f ( " A
pr i nt f ( " A
f or ( i nde
l i st [ i
apt = l i s
pr i nt f ( " A
pr i nt f ( " A
get ch( ) ;
esultado da
meira sada
gunda sada
rceira sada
uarta sada
uinta sada
xta sada
a Almeida I
Programao
em C
eguir codific
dice ou apo
ctor.
t di o. h"
t r i ng. h"
0] , *pt ,
l i st [ 100]
;
t r g, " I st
[ 0] ;
g;
A pr i mei r
[ 8] ;
g+8) ;
A Segunda
g+11;
A t er cei r
A Quar t a
ex = 0 ;
i ndex] =
st + 27;
A Qui nt a
A Sext a s
execuo
a i i
a m m
a s
s
127
127 */
ISEP
o
cado, perm
ontadores, e

n, m;
, i ndex;
t o e uma

r a sa da

a sa da
/ *
r a sa da
sa da
i ndex <
i ndex +
sa da
sa da %
ite verificar
em que am

st r i ng d
/
%c %c\
/ *
%c %c\ n
st r g+11
%c\ n" ,
%c\ n" , *
100 ; i n
100;
%d\ n" , l
%d\ n" , *a
r que se pod
bos represe
e car act e
* n e m
n" , n, m
n and m
" , n, m) ;
i gual
st r g[ 11
pt ) ;
dex++)
i st [ 27] )
pt ) ;
de trabalhar
entam a pos
er es. " ) ;
so i guai
) ;
so i gua
a &st r g
] ) ;
;
r com os
sio do
i s */
ai s */
g[ 11] */

10
Dulce

Ilu



e Mota & Ana
P
e
ustrao:
.
pt
.
apt
.
n
.
m
.
index
.
pt
.
apt
.
n
.
m
.
index
.
pt
.
apt
m
n
s
m
.
index
a Almeida I
Programao
em C
0
strg
I .s
lis
. .
0
0
strg
. . .
list
. . .
0
0
strg
.
I .s t o
list
.
100
0
101 102
ISEP
o
g
.
t o . .
st
.
. . . .
.
. . . .
.
. . . .
. .
. 2 103 197
0
31
. . .
99
. .
31
. .
99

0
31
99
198 199



11
Dulce

Ope

Ope
Atrib
Incre
Decr
Apon
Ende
Difer
Com

Arit

S do
A arit
apon
Cada
mem
Cada
tipo.
Para

Os o
direit
a = *
e Mota & Ana
P
e
eraes
rao
buio
emento
emento
ntado por
ereo de
rena
parao
tmtica
ois operado
tmtica de
ntador apon
a vez que um
mria que co
a vez que se
apontadore
peradores *
ta para a es
*ap++
a Almeida I
Programao
em C
sobre a
de Apon
ores aritmt
apontadore
ta, por isso
m apontado
ontm um e
eja decreme
es de caract
*, ++ e t
squerda.
atribui
ISEP
o
pontado
Exemp
ptr = &
ptr = pt
ptr = pt
*ptr
&ptr
ptr1 p
ptr1 > p
ntadores
ticos podem
es varia de a
o se diz de E
or increme
elemento do
entado, apo
teres a aritm
m a mesm
o contedo
ores
lo O
x I
v
tr+2 D
s
tr -10 D
s
C
E
ptr2 I
p
ptr2 I
n
e
s
m ser utilizad
acordo com
Escala Mve
entado, apo
o seu tipo.
ontar para
mtica igu
ma precedn
o a a; incre
Observa
Incializao
varivel x
Deslocamen
sizeof(tipo)
Deslocamen
sizeof(tipo)
Contedo d
Endereo do
Infoma do n
ptr1 e ptr2
Informa a
num vecto
endereos.
dos com ap
m o tipo de d
el.
ontar para
o local ante
ual norma
ncia e a asso
menta ap
es
do ptr a
nto do p
nto do pt
a varivel a
o apontado
nmero de
ordem de
or, compar

ontadores,
dados para
o prximo
erior com e
al.
ociatividade
ao endere
ptr em
r em -10
apontada po
r ptr
elementos
dois elem
rando os
+ e
onde o
local de
lementos d
e realizada

12
o da
2 *
0 *
or ptr
entre
entos
seus
o seu
a da
Dulce

a = *
a = (
a = *
a = +

Adi
Quan
subtr

Exe
Seja
ap =

Gene
Para
em q
No
de ap

Exem
int *a
ap++
ap--;

Exem
int v[
int *
*(p+
*(q-3
p++
e Mota & Ana
P
e
*(ap++)
(*ap)++
*++ap
++*ap
o e subtrac
ndo se ad
rado ao end
mplo
p um apon
ap + 9;
eralizando:
um qualqu
que: sizeof(
possvel e
pontadores,
mplo:
ap; se
+; ap
pa
; ap
mplo
[] = { 1,2,3
p = &v[0]
+4) result
3) resulta
; q p r
a Almeida I
Programao
em C
increm
atribui
increm
increm
co de inte
diciona ou s
dereo o ta
tador de qu
ap passa
er apontado
ap
( ) fornece
executar ou
, nem adi
o endereo
s o increm
ra float seri
s o decrem
3,4,5,6,7,8}
, * q = & v
tado 5
ado 3
resultado 4
ISEP
o
menta ap; e
o contedo
menta ap; m
menta o cont
eiros a apon
subtrai um
amanho do t
ualquer tipo
a apontar p
or ap e um
en n p
o tamanho
utras opera
o ou subtra
o de ap for 2
mento ser
ia de 4 byte
mento ser
;
v[5];
move o con
o p/ a; incre
move o conte
tedo; mov
ntadores
valor inte
tipo de dad
o
para o 9 el
inteiro n po
n ndereo
do tipo de
es, multi
aco de flo
2000,
2002, uma
es.
1998,
ntedo p/ a
ementa o co
edo de ap
ve o conted
iro a um a
os, em byte
lemento do
ode-se afirm
(* sizeof * a
dados do o
plicao, di
oat ou doub
a vez que u
a
ontedo
+1 p/ a;
do p/ a;
apontador,
es por cada
seu tipo a
mar:
) ap

perando
viso, adi
ble a aponta
um inteiro o
adicionad
unidade.
partir do ac
o ou subtr
adores.
ocupa dois

13
do ou
ctual
raco
bytes,

Você também pode gostar