Учебная версия на русском. Код и его вывод сохранены в исходном виде.
Вопросы по C на собеседовании
Повторите указатели, память, массивы, функции и неопределённое поведение на практических примерах.

Различайте значение объекта и его адрес. Аргументы в C передаются по значению. Функция может изменить объект вызывающего кода, получив копию действительного указателя на него. Массив не является указателем, хотя многие выражения с массивом преобразуются в указатель на первый элемент.
Объясните автоматическое и статическое время хранения, а также динамическое выделение памяти. Не возвращайте адрес автоматической локальной переменной. Проверяйте malloc и освобождайте каждое выделение ровно один раз. После free прежний адрес не даёт права обращаться к объекту.
Повторите sizeof, const, static и строки с нулевым завершением. sizeof целого массива измеряет весь массив, но параметр функции, записанный как массив, преобразуется в указатель. Для строки нужен дополнительный байт под завершающий ноль.
Перед решением алгоритмической задачи назовите предусловия, граничные случаи и сложность. Если фрагмент содержит неопределённое поведение, не придумывайте точный вывод: покажите недопустимую операцию и её исправление.
Частые вопросы
Почему код и вывод остаются на английском?
Ключевые слова, идентификаторы и строки, проверяемые тестами, сохранены, чтобы не менять программу. Объяснения и элементы управления переведены.