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
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
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
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?