trabalho
________________________________________________________________ Profa. Gilene Borges Gomes ___
Exercícios sobre Ponteiros
1. O que é um ponteiro? E para que serve um ponteiro?
2. Quais das seguintes instruções são corretas para declarar um ponteiro?
a) int _ptr x;
c) *int ptr;
b) int *ptr;
d) *x;
3. Qual é a maneira correta de referenciar ch, assumindo que o endereço de ch foi atribuído ao ponteiro indica?
a) *indica;
d) ch
b) int *indica;
e) *ch;
c) *indic;
4. Na expressão float *pont; o que é do tipo float?
a) a variável pont.
c) a variável apontada por pont.
b) o endereço de pont.
d) nenhuma das anteriores.
5. Assumindo que o endereço de num foi atribuído a um ponteiro pnum, quais das seguintes expressões são verdadeiras?
a) num == &pnum
c) pnum == *num
b) num == *pnum
d) pnum == &num
6. Assumindo que queremos ler o valor de x, e o endereço de x foi atribuído a px, a instrução seguinte é correta? Por que? scanf ( “%d”, *px );
7. Qual é a instrução que deve ser adicionada ao programa seguinte para que ele trabalhe corretamente? main ( ) { int j, *pj;
*pj = 3;
}
www.gomeshp.com
1
ESTRUTURA DE DADOS
________________________________________________________________ Profa. Gilene Borges Gomes ___
8. Assumindo que o endereço da variável x foi atribuído a um ponteiro px, escreva uma expressão que não usa x e divida x por 5.
9. Qual o valor das seguintes expressões: int i = 3, j = 5; int *p = &i, *q = &j;
a) p == &i
b) *p - *q
c)
**&p
10. Qual será a saída deste programa? main ( ) { int i = 5, *p = &i; printf ( “%u %d %d %d %d \n”, p, *p+2, **&p, 3**p, **&p+4);
}
11. Se i e j são variáveis inteiras e p e q são ponteiros para inteiros, quais das seguintes expressões de atribuição são ilegais?
a) p = &i;
e) i = *&*&j;
b) *q = &j;
f) q = &p;
c) p = &*&i;
g) i = (*p) ++ + *q;
d) i = (*&)j;
12. Seja a int int pti seguinte seqüência de instruções em um