Lista de Exercícios 1
- Ponteiros
- Alocação Dinâmica
1. Preencha corretamente as sentenças abaixo:
2. Analise o código abaixo. Quais serão os valores de x, y e z ao final da execução
int x, y, z;
int *ptr;
int **ptr2;
x = 4;
y = 8;
z = 16;
ptr = &z;
x = *ptr;
ptr2 = &ptr;
(*ptr)++;
ptr = &y;
*(*ptr2) += *(&x);
3. Qual é o erro do código abaixo?
#include <stdio.h>
int main() {
int x, y;
void *ptr_x;
int *ptr_y;
ptr_x = &x;
ptr_y = y;
printf("x: %d\n", *ptr_x);
printf("y: %d\n", *ptr_y);
return 0;
}
4. A leitura de uma variavel simples (não-array) com a função scanf necessita do uso do operador '&' para armazenar o conteúdo lido, ou seja, necessita do endereço da variável. Explique porque o operador '&' não é utilizado para ler strings com a função scanf. O código abaixo demonstra um exemplo:
char str[10];
char chr;
scanf(" %s", str); // Não usa o operador &
scanf(" %s", &chr); // Usa o operador &
5. Crie uma função swap que troca o valor de duas variáveis passadas como referência
6. Escreva um trecho de código para alocar um vetor de inteiros dinamicamente. Também escreva como liberar a memória alocada por esse vetor.
7. Escreva um trecho de código para alocar uma matriz de inteiros dinamicamente. Também escreva como liberar a memória alocada por essa matriz.
8. Escreva uma função que recebe como parâmetro duas strings, A e B, e retorna uma nova string, cujo conteúdo é a concatenação de A com B.
OBS: você poderá usar a biblioteca string.h, mas não poderá usar a função strcat.
9. Escreva uma função que recebe como parâmetro uma string, e retorne-a invertida.