📚 DE LIBRE ACCESO · SIN LOGIN

Respuestas modelo

Consulta aquí las respuestas correctas y explicaciones de las autoevaluaciones y los tests del manual. Ideal para repasar antes de un test o aclarar dudas.

111
🎯 autoevaluación
355
📝 test · opción múltiple
111 / 111
✍️ test · abiertas con respuesta
37
temas cubiertos
✕ Limpiar

4.01 · Punteros y Memoria Dinámica

16 preguntas con respuesta en este tema.

🎯 Autoevaluación (3)

1
🎯 AE

¿Qué es un puntero?

  • A. Un número entero
  • B. Una variable que almacena la dirección de memoria de otra variable ✓ CORRECTA
  • C. Una función
  • D. Un tipo de cadena
💡 Por qué es correcta:

Puntero: variable que guarda una dirección de memoria. `int* p = &x;` p apunta a x.

2
🎯 AE

¿Qué operador obtienes la dirección de una variable?

  • A. *
  • B. & ✓ CORRECTA
  • C. ->
  • D. #
💡 Por qué es correcta:

& es "address-of" (dirección de). * es "dereference" (valor apuntado).

3
🎯 AE

¿Qué es un puntero nullptr?

  • A. Un puntero a 0
  • B. Un puntero que no apunta a nada válido ✓ CORRECTA
  • C. Un puntero al primer elemento
  • D. Un bug
💡 Por qué es correcta:

nullptr (o NULL) indica que el puntero no apunta a ninguna dirección válida. Verificar antes de desreferenciar.

📝 Test · Sección A · Opción múltiple (10)

1
📝 MC

¿Qué es un puntero?

  • A. Un número entero
  • B. Variable que almacena la dirección de memoria de otra variable ✓ CORRECTA
  • C. Una función
  • D. Un array
💡 Por qué es correcta:

Puntero: variable que guarda una dirección de memoria. int* p = &x.

2
📝 MC

¿Cómo obtienes la dirección de una variable?

  • A. *
  • B. & ✓ CORRECTA
  • C. ->
  • D. #
💡 Por qué es correcta:

& es "address-of". Obtiene la dirección de memoria de una variable.

3
📝 MC

¿Cómo accedes al valor apuntado por un puntero?

  • A. &
  • B. * ✓ CORRECTA
  • C. ->
  • D. ->*
💡 Por qué es correcta:

*p desreferencia: accede al valor en la dirección apuntada.

4
📝 MC

¿Qué es un puntero nullptr?

  • A. Apunta a 0
  • B. Apunta a "nada" (dirección inválida) ✓ CORRECTA
  • C. Apunta a null
  • D. Es un puntero al primer elemento
💡 Por qué es correcta:

nullptr (C++11) o NULL: puntero que no apunta a nada válido.

5
📝 MC

¿Qué pasa si desreferencias un puntero null?

  • A. Devuelve 0
  • B. Comportamiento indefinido (típicamente crash) ✓ CORRECTA
  • C. NullPointerException
  • D. No compila
💡 Por qué es correcta:

Dereferenciar null: undefined behavior. En debug, segfault.

6
📝 MC

¿Para qué sirven los punteros?

  • A. Solo para arrays
  • B. Paso por referencia, estructuras dinámicas, polimorfismo ✓ CORRECTA
  • C. Para nada
  • D. Para comentarios
💡 Por qué es correcta:

Punteros: paso por ref, memoria dinámica, herencia/polimorfismo.

7
📝 MC

¿Qué es aritmética de punteros?

  • A. Sumar enteros
  • B. Sumar/restar al puntero para moverse en memoria ✓ CORRECTA
  • C. Multiplicar
  • D. Compilar
💡 Por qué es correcta:

p++ mueve al siguiente elemento según el tipo. p + i apunta al i-ésimo elemento.

8
📝 MC

Un puntero void* se puede convertir a:

  • A. Cualquier tipo ✓ CORRECTA
  • B. Solo int
  • C. Solo void
  • D. Solo char
💡 Por qué es correcta:

void*: puntero genérico. Se puede castear a cualquier tipo de puntero.

9
📝 MC

¿Qué es un puntero colgante (dangling)?

  • A. Funciona bien
  • B. Apunta a memoria liberada o inválida ✓ CORRECTA
  • C. Es un puntero inteligente
  • D. Es un puntero constante
💡 Por qué es correcta:

Dangling: puntero a memoria ya liberada con delete o que salió de scope. Peligroso.

10
📝 MC

¿Qué es un puntero inteligente (smart pointer)?

  • A. Puntero normal
  • B. Clase que gestiona memoria automáticamente (unique_ptr, shared_ptr) ✓ CORRECTA
  • C. Puntero a función
  • D. Puntero constante
💡 Por qué es correcta:

Smart pointer: RAII. unique_ptr: único dueño. shared_ptr: varios dueños con refcount.

✍️ Test · Sección B · Preguntas abiertas (3)

11
✍️ AB

Explica con un ejemplo cuándo usar punteros vs referencias en C++.

💡 Por qué es correcta:

Puntero: cuando necesitas null (parámetros opcionales), aritmética de punteros, ownership explícito. Referencia: cuando siempre hay un valor válido, en interfaces, para paso por referencia limpio. Ej: función buscaNodo(int id, Nodo* raiz) acepta null para lista vacía; función calcular(const Persona& p) siempre recibe una persona.

12
✍️ AB

¿Qué es un puntero colgante y cómo prevenirlo?

💡 Por qué es correcta:

Dangling: puntero que apunta a memoria liberada. Causa bugs difíciles. Prevenir: evitar punteros crudos con new/delete, usar smart pointers (unique_ptr, shared_ptr), no devolver punteros a variables locales, nullptr explícito.

13
✍️ AB

Diseña una función que intercambie dos enteros usando punteros.

💡 Por qué es correcta:

void swap(int* a, int* b) { int tmp = *a; *a = *b; *b = tmp; }. Uso: int x=5, y=10; swap(&x, &y); // x=10, y=5.

📝 ¿Listo para evaluarte?

Regístrate o inicia sesión para tomar la autoevaluación o el test de este tema y registrar tu puntaje.