Quiz 4 — Ponteiros e Memória

Avaliação das Aulas 20 a 23

20
Questões
4
Aulas cobertas
14/20
Aprovação (70%)
Cobre: Operadores & e * · alocação de memória · aritmética de ponteiros · malloc / calloc / realloc / free · passagem por valor vs. por referência · const em ponteiros

Aula 20 — Ponteiros e Alocação de Memória: operadores & e *

Questões 1 a 5

Aula 20

1. Qual é a saída?

#include <stdio.h>
int main() {
    int x = 7;
    int *p = &x;
    *p = 20;
    printf("%d", x);
}
Aula 20

2. Em sistemas 64-bit, qual é o tamanho em bytes de um double *?

Aula 20

3. O que acontece ao tentar usar um ponteiro que não foi inicializado?

Aula 20

4. Qual a diferença entre *p++ e (*p)++?

Aula 20

5. Por que é boa prática escrever p = NULL logo após free(p)?

Aula 21 — Aritmética de Ponteiros

Questões 6 a 10

Aula 21

6. Se p é um int * apontando para 0x1000, qual é o endereço de p + 3?

Aula 21

7. Qual é a saída?

int v[] = {10, 20, 30, 40, 50};
int *p = v + 2;
printf("%d %d", *p, *(p + 1));
Aula 21

8. As expressões v[i] e *(v + i) para um array int v[] são:

Aula 21

9. Dado int v[6] com int *p = &v[1] e int *q = &v[5], qual é o valor de q - p?

Aula 21

10. A função abaixo conta o comprimento de uma string. O que ela retorna para "hello"?

int len(const char *s) {
    const char *p = s;
    while (*p) p++;
    return p - s;
}

Aula 22 — Alocação Dinâmica: malloc, calloc, realloc e free

Questões 11 a 15

Aula 22

11. Qual é a diferença fundamental entre malloc e calloc?

Aula 22

12. Qual é o erro no código abaixo?

int *p = (int *) malloc(10 * sizeof(int));
p = realloc(p, 20 * sizeof(int));
Aula 22

13. Qual das afirmações sobre free é verdadeira?

Aula 22

14. Qual é a fórmula correta para acessar o elemento na linha i, coluna j de uma matriz alocada como array único com C colunas?

Aula 22

15. Por que a estratégia de dobrar a capacidade no realloc é preferível a aumentar 1 elemento por vez?

Aula 23 — Ponteiros e Funções: passagem por referência versus por valor

Questões 16 a 20

Aula 23

16. Qual é a saída?

#include <stdio.h>
void f(int x) { x = 99; }
int main() {
    int a = 5;
    f(a);
    printf("%d", a);
}
Aula 23

17. Qual é a saída?

#include <stdio.h>
void trocar(int *a, int *b) {
    int t = *a; *a = *b; *b = t;
}
int main() {
    int x = 10, y = 20;
    trocar(&x, &y);
    printf("%d %d", x, y);
}
Aula 23

18. O que o parâmetro const float *v garante dentro de uma função?

Aula 23

19. Por que a função abaixo está errada?

int *calcular() {
    int resultado = 42;
    return &resultado;
}
Aula 23

20. Uma função recebe int **pp e executa *pp = malloc(10 * sizeof(int)). O que isso faz no chamador?

—
de 20 questões corretas
—

Desempenho por Aula

Gabarito Detalhado

Continuar para a Aula 24 →