Algoritmos e Estrutura de Dados I - AE22CP - 2016/1

Bruno César Ribas

Exercícios

  1. Responda as perguntas abaixo. Se achar necessário, faça testes no computador.
    • Explique a diferença entre
      • p++;
      • (*p)++;
      • *(p++);
    • O que quer dizer *(p+10);?
    • Explique o que você entendeu da comparação entre ponteiros

  2. Qual o valor de y no final do programa? Tente primeiro descobrir e depois verifique no computador o resultado.

      int main(void)
      {
               int y, *p, x;
               y = 0;
               p = &y;
               x = *p;
               x = 4;
               (*p)++;
               x­­;
               (*p) += x;
               printf ("y = %d\n", y);
               return 0;
      }
    

  3. Diga quais expressões abaixo são válidas ou não. Considere as declarações:
      int vetor[10];
      int *ponteiro;
    
    • vetor = vetor +2;
    • vetor++;
    • vetor = ponteiro;
    • ponteiro = vetor;
    • ponteiro = vetor+2;

  4. Explique o que faz o programa abaixo
      int main(void){
        float vet[5] = {1.1,2.2,3.3,4.4,5.5};
        float *f;
        int i;
        f = vet;
        printf("contador/valor/valor/endereco/endereco\n");
        for(i = 0 ; i <= 4 ; i++){
          printf("i = %d",i);
          printf("   vet[%d] = %.1f",i, vet[i]);
          printf("   *(f + %d) = %.1f",i, *(f+i));
          printf("   &vet[%d] = %X",i, &vet[i]);
          printf("   (f + %d) = %X\n",i, f+i);
        }
        return 0;
      }
    

  5. Assumindo que M1[] é um vetor do tipo int, quais das seguintes expressões referenciam o valor do terceiro elemento de M1? a) *(M1 + 2)          b) *(M1 + 4)             c) M1 + 4                       d) M1 + 2

  6. Seja vet um vetor de 4 elementos: TIPO vet[4]. Supor que depois da declaração, vet esteja armazenado no endereço de memória 4092 (ou seja, o endereço de vet[0]). Supor também que na máquina usada uma variável do tipo char ocupa 1 byte, do tipo int ocupa 2 bytes, do tipo float ocupa 4 bytes e do tipo double ocupa 8 bytes.

    Qual o valor de vet+1, vet+2 e vet+3 se:
    • vet for declarado como char?
    • vet for declarado como int?
    • vet for declarado como flota?
    • vet for declarado como double?

  7. Verifique o programa abaixo. Encontre o seu erro e corrija­o para que escreva o numero 10 na tela.
      #include <stdio.h>
      int main(void)
      {
              int x, *p, **q;
              p = &x;
              q = &p;
              x = 10;
              printf("%d\n", &q);
              return 0;
      }
    

--
Last Modified: Tue Mar 8 17:59:50 2016.