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.
4.01 · Punteros y Memoria Dinámica
16 preguntas con respuesta en este tema.
🎯 Autoevaluación (3)
¿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
Puntero: variable que guarda una dirección de memoria. `int* p = &x;` p apunta a x.
¿Qué operador obtienes la dirección de una variable?
- A. *
- B. & ✓ CORRECTA
- C. ->
- D. #
& es "address-of" (dirección de). * es "dereference" (valor apuntado).
¿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
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)
¿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
Puntero: variable que guarda una dirección de memoria. int* p = &x.
¿Cómo obtienes la dirección de una variable?
- A. *
- B. & ✓ CORRECTA
- C. ->
- D. #
& es "address-of". Obtiene la dirección de memoria de una variable.
¿Cómo accedes al valor apuntado por un puntero?
- A. &
- B. * ✓ CORRECTA
- C. ->
- D. ->*
*p desreferencia: accede al valor en la dirección apuntada.
¿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
nullptr (C++11) o NULL: puntero que no apunta a nada válido.
¿Qué pasa si desreferencias un puntero null?
- A. Devuelve 0
- B. Comportamiento indefinido (típicamente crash) ✓ CORRECTA
- C. NullPointerException
- D. No compila
Dereferenciar null: undefined behavior. En debug, segfault.
¿Para qué sirven los punteros?
- A. Solo para arrays
- B. Paso por referencia, estructuras dinámicas, polimorfismo ✓ CORRECTA
- C. Para nada
- D. Para comentarios
Punteros: paso por ref, memoria dinámica, herencia/polimorfismo.
¿Qué es aritmética de punteros?
- A. Sumar enteros
- B. Sumar/restar al puntero para moverse en memoria ✓ CORRECTA
- C. Multiplicar
- D. Compilar
p++ mueve al siguiente elemento según el tipo. p + i apunta al i-ésimo elemento.
Un puntero void* se puede convertir a:
- A. Cualquier tipo ✓ CORRECTA
- B. Solo int
- C. Solo void
- D. Solo char
void*: puntero genérico. Se puede castear a cualquier tipo de puntero.
¿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
Dangling: puntero a memoria ya liberada con delete o que salió de scope. Peligroso.
¿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
Smart pointer: RAII. unique_ptr: único dueño. shared_ptr: varios dueños con refcount.
✍️ Test · Sección B · Preguntas abiertas (3)
Explica con un ejemplo cuándo usar punteros vs referencias en C++.
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.
¿Qué es un puntero colgante y cómo prevenirlo?
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.
Diseña una función que intercambie dos enteros usando punteros.
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.