[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;
   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]];

}

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);

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?

void main(){ 
   int i=5, *p; 
   p = &i; 
   printf("%d, %d, %d ,%d, %d", p,(*p+2),**&p, (3**p),(**&p+4); 
}
[Exercícios] Estrutura de dados - Ponteiros #1 [Exercícios] Estrutura de dados - Ponteiros #1 Reviewed by Vinicius dos Santos on 06:09:00 Rating: 5

Nenhum comentário

Escreva aí sua opinião!