Edición didáctica en español. El código y sus salidas conservan el original.
Preguntas de entrevista sobre C
Repasa punteros, memoria, arrays, funciones y comportamiento indefinido con razonamiento práctico.

Explica primero la diferencia entre un valor y su dirección. C pasa argumentos por valor; una función puede modificar un objeto del llamador si recibe una copia de un puntero válido a ese objeto. Un array no es un puntero, aunque muchas expresiones de array se convierten en punteros al primer elemento.
Distingue duración automática, estática y almacenamiento asignado dinámicamente. Nunca devuelvas la dirección de una variable local automática. Comprueba malloc y libera cada asignación una sola vez. Un puntero que conserva una dirección después de free no permite seguir accediendo al objeto.
Practica sizeof, const, static y las cadenas terminadas en cero. sizeof de un array completo mide todo el array; dentro de una función, un parámetro escrito como array se ajusta a un puntero. Reserva espacio para el terminador de las cadenas.
En problemas de algoritmos, describe precondiciones, casos límite y complejidad antes de programar. Si un fragmento tiene comportamiento indefinido, no inventes una salida determinista: explica la operación inválida y cómo corregirla.
Preguntas frecuentes
¿Por qué el código y la salida siguen en inglés?
Las palabras clave, los identificadores y los textos que verifican las pruebas se conservan para no cambiar el programa. Las explicaciones y los controles están traducidos.