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. Faça um paralelo sobre o conceito de ponteiros e os vetores (estáticos);

  2. Explique porquê os ponteiros ajudam o desenvolvimento de aplicações que otimizam o espaço da memória;

  3. Suponha que v é um vetor. Descreva o porquê existe uma diferença entre escrever v[3] e v + 3;

  4. Analise o código abaixo e determine o valor das variáveis ao final da execução.

    int i=34,j; 
    int *p;
    p = &i;
    *P++;
    j = *p + 33;
    
  5. Analise o código abaixo e determine o valor das variáveis ao final da execução.

    int i=7, j=5;
    int *p;
    int **q;
    p = &i;
    q = &p;
    c = **q + j;
    
  6. Analise o código abaixo e determine o valor das variáveis ao final da execução.

    int a=5, b=12, c=5;
    int *p;
    int *q;
    p = &a;
    q = &b;
    (*p)++;
    c = *p + *q;
    
  7. Explique o programa abaixo. Encontre o erro, corrija-o para que o mesmo escreva o número 10 na tela.

    #include <stdio.h> 
    
    int main( void ) { 
    	int x, *p, **q; 
    	p = &x; 
    	q = &p; 
    	x = 10; 
    	printf(“%d\\n”, &q); 
    }
    
  8. Declare um vetor de 10 posições do tipo int, inicialize um ponteiro para a posição inicial do vetor, faça o ponteiro percorrer o vetor preenchendo estas posições com valores quaisquer lidos do teclado e depois imprima os 10 valores de trás para frentes, novamente a partir do vetor;

  9. Escreva uma função que encontre o maior elemento em um vetor de inteiros usando ponteiros. A função deve retornar o valor do maior elemento encontrado.

  10. Escreva uma função que receba dois vetores de inteiros e seus tamanhos como parâmetros, e calcule a soma desses vetores elemento por elemento usando ponteiros. A função deve armazenar o resultado em um terceiro vetor.

  11. Escreva uma função que receba um vetor de inteiros e seu tamanho como parâmetros e inverta a ordem dos elementos do vetor usando ponteiros. A função deve modificar o vetor original.

  12. Escreva uma função que receba dois vetores de inteiros e seus tamanhos como parâmetros, e copie o conteúdo de um vetor para o outro usando ponteiros. A função deve criar uma cópia exata do vetor original.

  13. Crie uma função que copia um vetor de caracteres para outro vetor (cria uma cópia). O protótipo da função deve ser: char *strcopy(char *str, int tamanho);