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;
b) int *ptr;
c) *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;
b) int *indica; c) *indic;
d) ch
e) *ch; 4. Na expressão float *pont; o que é do tipo float?
a) a variável pont.
b) o endereço de pont.
c) a variável apontada por 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
b) num == *pnum
c) pnum == *num
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 a dicionada ao programa seguinte para que le trabalhe corretamente? main ( ) { int j, *pj; *pj = 3;
}
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;
b) *q = &j;
c) p = &*&i;
d) i = (*&)j;
e) i = *&*&j;
f) q = &p;
g) i = (*p) ++ + *q;
12. Seja a seguinte seqüência de instruções em um programa C: int *pti; int i = 10; pti = &i;
Qual afirmativa é falsa?
a)pti armazena o endereço de i
b) *pti é igual a 10