[Exercícios] Estrutura de dados - Ponteiros #1
1.Quais serão os valores de x, y e p ao final do trecho de código
abaixo?
void main() {
int x, y, *p; y = 0;
p = &y;
x = *p;
x = 4;
(*p)++;
--x;
(*p) += x;
}
2.Os programas (trechos de código) abaixo possuem erros. Qual(is)?
Como deveriam ser?
a)
void main() {
int x, *p;
x = 100;
p = x;
printf(“Valor de p: %d.\n”, *p);
}
b)
void troca (int *i, int *j) {
int *temp;
*temp = *i;
*i = *j;
*j = *temp;
}
c)
main(){
char *a, *b;
main(){
char *a, *b;
a = "abacate";
b = "uva”;
if (a < b)
printf ("%s vem antes de %s no dicionário", a, b);
else
printf ("%s vem depois de %s no dicionário", a, b);
}
3)Suponha que os elementos do vetor v são do tipo int e cada int
ocupa 8 bytes no seu computador. Se o endereço de v[0] é 55000, qual o
valor daexpressão v + 3?
4)Escreva uma função mm que receba um vetor inteiro v[0..n-1] e os
endereçosde duas variáveis inteiras, digamos min e max, e deposite nessas
variáveis ovalor de um elemento mínimo e o valor de um elemento máximo do
vetor. Escreva também uma função main que use a função mm.
5)Suponha que v é um vetor. Descreva a diferença conceitual entre
as expressões v[3] e v + 3.
6)(sem usar o computador) Qual o conteúdo do vetor a depois dos
seguintes comandos.
main(){
int i, a[99];
for (i = 0; i < 99; ++i)
a[i] = 98 - i;
for (i = 0; i < 99; ++i)
a[i] = a[a[i]];
main(){
int i, a[99];
for (i = 0; i < 99; ++i)
a[i] = 98 - i;
for (i = 0; i < 99; ++i)
a[i] = a[a[i]];
}
7)Escreva uma função chamada troca que troca os valores dos
parâmetros recebidos. Sua assinatura deve ser:void troca(float *a, float *b);
8)Crie uma função que receba uma string como parâmetro e retorne uma cópia da mesma.
A assinatura da função deve ser: char *strcopy(char *str, int tamanho);
A assinatura da função deve ser: char *strcopy(char *str, int tamanho);
9)Qual o resultado d o código abaixo?
Explique cada linha.
main (){
int x = 100, *p, **pp;
p = &x;
pp = &p;
printf("Valor de pp: %d\n", **pp);
}
}
10) Escreva uma função que recebe uma string de caracteres e uma letra e devolve um vetor de inteiros contendo as posições (índices no vetor da string) onde a letra foi encontrada). Utilize uma variável inteira para passar o tamanho do vetor original.
11) O que significa o operador asterisco em cada um dos seguintes casos:
a) int *p;
b) printf("%d",*p);
c) *p = x*5;
d) printf("%d",*(p+1));
12) Qual é a saída deste programa?
Post a Comment