Exercícios I: Programação em C

Para todos os exercícios propostos, crie uma makefile para compilar e executar os seus programas de resposta.

  1. Considere o seguinte bloco de código:

    
      int i = 5;
      int *p = &i;
    

  2. Tendo como referência o exemplo abaixo, escreva um programa que use apontadores para cada um dos três tipos de dados básicos (char; short, int ou long; e float ou double). Comece por declarar e iniciar uma variável para cada tipo básico juntamente com um apontador para essa variável. De seguida, utilize o operador sizeof para imprimir o tamanho de cada variável, o tamanho do seu endereço de memória, o tamanho de cada apontador e o tamanho do conteúdo apontado por cada apontador. Por fim, imprima o endereço e o conteúdo de cada uma das variáveis.

    
      char c, *cptr;
      c = 'a';
      cptr = &c;
      printf("tamanho de um char: %d\n", sizeof(c));
      printf("tamanho do endereço de um char: %d\n", sizeof(&c));
      printf("tamanho de um apontador para um char: %d\n", sizeof(cptr));
      printf("tamanho do conteúdo apontado por um apontador para um char: %d\n", sizeof(*cptr));
      printf( "Os valores apontados pelos endereços '%p' e '%p' são '%c' e '%c'\n", &c, cptr, c, *cptr);
    

  3. Considere a seguinte declaração:

    
      int x[3] = {23, 41, 17};
    

    Qual é o valor das expressões que se seguem:

  4. Complete o exemplo abaixo de forma a imprimir os valores e os endereços de um vector de caracteres com as 10 primeiras letras do alfabeto.

    
    #include <stdio.h>
    #define SIZE 10
    #define SUCCESS 1
    
    void show_vector(char *a);
    
    int main() {
      static char v[SIZE] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
    
      show_vector(v);
      return SUCCESS;
    }
    
    void show_vector(char *a) {
      /* imprima aqui os valores e endereços de cada elemento do vector */
    }