Вы находитесь на странице: 1из 5

Anlise e Desenvolvimento de

Sistemas
Estruturas de Dados
Prof. Dr. Lucas Baggio Figueira

Lista de Exerccios - Ponteiros

1. O que um ponteiro? E para que serve um ponteiro?

R: Ponteiro uma varivel que armazena endereos de memria.


2. Quais das seguintes instrues so corretas para declarar um ponteiro?
a) int _ptr x;
b) int *ptr;
c) *int ptr;
d) *x
3. Qual a maneira correta de referenciar ch, assumindo que o endereo de ch foi
atribudo ao ponteiro indica?
a) *indica;
b) int *indica;
c) *indic;
d) ch
e) *ch;
4. Na expresso float *pont; o que do tipo float?
a) a varivel pont.
b) o endereo de pont.
c) a varivel apontada por pont.
d) nenhuma das anteriores (n.d.a.)
5. Assumindo que o endereo de num foi atribudo a um ponteiro pnum, quais das
seguintes expresses so verdadeiras?
a) num == &pnum
b) pnum == *num
c) num == *pnum
d) pnum == &num
6. Assumindo que queremos ler o valor de x, e o endereo de x foi atribudo a px, a
instruo seguinte correta? Por que?
scanf ( %d, *px );

R: No pois o scanf espera o endereo da varivel destino o correto


seria
scanf(%d, px).

7. Qual a instruo que deve ser adicionada ao programa seguinte para que ele
trabalhe corretamente?

main ( ) {
int j, *pj;
*pj = 3;
}
$0 j
0
$0
1
$0 $00 pj
2
$0
3
$0
4
$0
5
$0
6 R: pj = &j
$0
7
$0
8
$0
9
$1
0
8. Assumindo que o endereo da varivel x foi atribudo a um ponteiro px, escreva
uma expresso que no usa x e divida x por 5.
main(){
int x, *px;
px=&x
*px/5
}

9. Qual o valor das seguintes expresses:


int i=3, j=5; int *p=&i, *q=&j;
a) p==&i
b) *p-*q
c) **&p
$0 3 i
0
$0 5 j
1
$0
2
$0
3
$0
4
$0
5
$0
6
$0 10. Qual ser a sada deste programa?
7 main ( ) {
$0
8 int i=5, *p=&i;
$0
9
printf ( %u %d %d %d %d \n, p, *p+2, **&p, 3**p,
$1 **&p+4);
0
}
R:229332475159
11. Se i e j so variveis inteiras e p e q so ponteiros para inteiros, quais das seguintes
expresses de atribuio so ilegais?
a) p=&i;
b) *q=&j;
no possivel fazer uma atriobuio indicando um ponteiro

c) c) p=&*&i;
d) i = (*&)j;
e) i=*&*&j;
f) q=&p;
g) i=(*p)+++*q;

12. Seja a seguinte seqncia de instrues em um programa C:


int *pti;
int i = 10;
pti = &i;
Qual afirmativa falsa?
a) pti armazena o endereo de i
b) *pti igual a 10
c) ao se executar *pti = 20; i passar a ter o valor 20 d) ao se alterar o valor de i, *pti
ser modificado
e) pti igual a 10
pti armazena o endereo de mmria de I no o valor

13. Considerando as variveis e ponteiros definidos abaixo; quais so as atribuies


permitidas?
int x, *ptx, **pp;
float *pta, **pf;

a) x=100;
b) $00 100 x *pta=&a;
c) ptx = * $01 pt &a;
d) *pf = x &a;
* $02 pp
e) pp=&pta;
*
f) **pf=7.9;
$03 a
g) *ptx $04 pt
= 20;
*
h) ptx = a &x;
i) pp = * $05 pf &x;
j) pf = * &pta;
$06
$07
$08
$09
$10
14. Dadas as declaraes abaixo; qual o valor dos itens:
int x=10, *px=&x, **ppx=&x;
float y = 5.9, *py = &y, **ppy = &py;

a) x = 10

b) *py= 5.9

c) px = FFA0

d) &y = FFB4

e) *px = 10

f) y = 5.9

g) *ppx = 10

h) py = FFB4

i) &x = FFA0

j) py++=----------

k) *px-- = 9

l) **ppy = 5.9

m) &ppy = FFA6

n) *&px = FFA0

o) **ppx++ =-----

p) px++ =

------
q) &ppx = FFD

Вам также может понравиться