Valor

Esta atividade não compõe a nota bimestral.

Quantidade de alunos

A lista deve preferencialmente ser desenvolvida individualmente.

Data de entrega e defesa

Não é necessário a entrega da lista.

Exercícios

  1. Dado o seguinte trecho de programa, qual o conteúdo das variáveis após a sua execução? Implemente este programa para conferir.

    void main() {
    	int x = 1;
    	int y = 2;
    	int *ip;
    
    	ip = &x;
    	y = *ip;
    	*ip = 0;
    }
    
  2. Qual das instruções abaixo é correta para declarar um ponteiro para inteiro? Por quê?

    1. *int pti;
    2. *pti;
    3. &i;
    4. int_pti pti;
    5. int *pti;
  3. Seja a seguinte sequência de instruções em um programa C, qual afirmativa é falsa? Faça um programa que implemente as afirmativas corretas e comprove sua resposta.

    1. pti armazena o endereço de i

    2. *pti é igual a 10

    3. ao se executar *pti = 20; i passará a ter o valor 20

    4. ao se alterar o valor de i, *pti será modificado

    5. pti é igual a 10

      int *pti;
      int i = 10;
      pti = &i;
      
  4. Assinale a alternativa correta com relação ao estudo de Ponteiros:

    1. Ponteiro é o valor de uma variável;
    2. Ponteiro é o indicador da próxima variável a ser passada;
    3. Ponteiro é uma variável que armazena endereço;
    4. Ponteiro é o endereço que aponta para uma variável;
  5. Compile e execute o seguinte programa.

    int main (void) {
    	int i; int *p;
    	i = 1234; p = &i;
    	printf ("*p = %d\\n", *p);
    	printf (" p = %ld\\n", (long int) p);
    	printf (" p = %p\\n", (void *) p);
    	printf ("&p = %p\\n", (void *) &p);
    	return EXIT_SUCCESS;
    }
    
  6. Seja o trecho de código abaixo, qual o valor de c será impresso no comando printf:

    void main()
    {
    	int a=5, b=12, c;
    	int *p;
    	int *q;
    	p = &a;
    	q = &b;
    	c = *p + *q;
    	printf("c = %d", c);
    }
    
  7. Tente inferir qual seria o valor da variável y no final do programa abaixo:

    int main(void)
    {
      int x,y,w,*p1,*p2;
      x = 20;
      w = 30;
      p1 = &x;
      p2 = &w;
      y = *p1 + *p2;
      return 0;
    }
    
  8. Tente inferir qual seria o valor da variável y no final do programa abaixo:

    int main(void)
    {
      int x,y,w,*p1,*p2, *p3;
      x = 20;
      w = 30;
      p1 = &x;
      p2 = &w;
      y = *p1 + w;
      p3 = &y;
      *p3 = *p3 + 10;
      y = *p1 + *p2 + *p3;
      return 0;
    }
    
  9. Escreva um programa que declare um inteiro, um real e um char, e ponteiros para inteiro, real, e char. Associe as variáveis aos ponteiros (use &). Modifique os valores de cada variável usando os ponteiros. Imprima os valores das variáveis antes e após a modificação.

  10. Crie um programa que contenha uma matriz de float contendo três linhas e três colunas. Imprima o endereço de cada posição dessa matriz.

  11. Escreva um programa que contenha duas variáveis inteiras. Compare seus endereços e exiba o maior endereço.

  12. Escreva um programa que contenha duas variáveis inteiras. Leia essas variáveis do teclado. Em seguida, compare seus endereços e exiba o conteúdo do maior endereço.

  13. Faça um programa que leia 2 valores inteiros e chame uma função que receba estas 2 variáveis e troque o seu conteúdo, ou seja, esta função e chamada passando duas variáveis A e B por exemplo e, após a execução da função, A conter a o valor de B e B terá o valor de A.