Buscar

listaponteiros

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Continue navegando


Prévia do material em texto

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL
Sistemas de Informação - CPTL
Algoritmos e Programação II UFMS
Lista de Exercícios � Ponteiros
Exercício 1 Se i é uma variável e p é uma variável ponteiro que aponta para i, quais das seguintes
expressões são apelidos para i?
(a) *p
(b) &p
(c) *&p
(d) &*p
(e) *i
(f) &i
(g) *&i
(h) &*i
Exercício 2 Se i é uma variável do tipo int e p e q são ponteiros para int , quais das seguintes
atribuições são corretas?
(a) p = i;
(b) *p = &i;
(c) &p = q;
(d) p = &q;
(e) p = *&q;
(f) p = q;
(g) p = *q;
(h) *p = q;
(i) *p = *q;
Exercício 3 Descreva brevemente o que o programa a seguir faz.
#include <stdio.h>
int main(void)
{
int a, b, *pt1, *pt2;
pt1 = &a;
pt2 = &b;
a = 1;
(*pt1)++;
b = a + *pt1;
pt2 = *pt1 * *pt2;
printf("a=%d, b=%d, *pt1=%d, *pt2=%d\n", a, b, *pt1, *pt2);
return 0;
}
1
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL
Sistemas de Informação - CPTL
Exercício 4 Descreva brevemente o que o programa abaixo faz.
#include <stdio.h>
int main(void)
{
int a, b, c, *ptr;
a = 3;
b = 7;
printf("a=%d, b=%d\n", a, b);
ptr = &a;
c = *ptr;
ptr = &b;
a = *ptr;
ptr = &c;
b = *ptr;
printf("a=%d, b=%d\n", a, b);
return 0;
}
Exercício 5 Descreva brevemente o que o programa abaixo faz.
#include <stdio.h>
int main(void)
{
int i, j, *p, *q;
p = &i;
q = p;
p = 1;
printf("i=%d, *p=%d, *q=%d\n", i, *p, *q);
q = &j;
i = 6;
q = *p;
printf("i=%d, j=%d, *p=%d, *q=%d\n", i, j, *p, *q);
return 0;
}
Exercício 6 Suponha que as declarações e atribuições simultâneas tenham sido realizadas nas variáveis
listadas abaixo:
int v[] = {5, 15, 34, 54, 14, 2, 52, 72};
int *p = &v[1], *q = &v[5];
(a) Qual o valor de *(p + 3) ?
(b) Qual o valor de *(q - 3) ?
(c) Qual o valor de q - p ?
(d) A expressão p < q tem valor verdadeiro ou falso?
2
UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL
Sistemas de Informação - CPTL
(e) A expressão *p < *q tem valor verdadeiro ou falso?
Exercício 7 Qual o conteúdo do vetor v após a execução do seguinte trecho de código?
.
.
.
#define N 10
int main(void)
{
int v[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p = &v[0], *q = &v[N - 1], temp;
while (p < q) {
temp = *p;
p++ = *q;
q-- = temp;
}
.
.
.
Exercício 8 Suponha que v é um vetor e p é um ponteiro. Considere que a atribuição p = v; foi
realizada previamente. Quais das expressões abaixo não são permitidas? Das restantes,
quais têm valor verdadeiro?
(a) p == v[0]
(b) p == &v[0]
(c) *p == v[0]
(d) p[0] == v[0]
3