Посоветуйте, пожалуйста, хороший, свежий учебник по «низкоуровневому» С (можно с уклоном в микроконтроллеры). Очень хотелось бы подробного и внятного описания:
— битовых операций;
— как размещяются структуры в памяти;
— арифметики указателей;
— процессов компиляции и линковки;
— отличий undefined behavior от unspecified behavior (и тому подобного):
— всяких тонких моментов, которые менялись от стандарта к стандарту.
Без чего можно обойтись:
— без подробного описания использования функций print, scanf;
— без платформозависимых вещей (особенно для DOS);
— без рассказов о том, почему всем обязательно нужно использовать только блоковые комментарии.
Желательно, чтобы учебник был в курсе стандарта С99 (хотя бы).
Вам, думаю, только вторая поможет, первая просто старовата, но думаю полезное и в ней найдете. Книги известные, может у вас и есть, но это вроде лучшее, что было.
У меня вторая есть на русском, в бумажном виде, если захотите купить, то есть на Озоне — www.ozon.ru/context/detail/id/5637788/. Но я всегда пользовался только оригиналом в электронном виде, так что не могу сказать о качестве перевода. Я бы не рисковал! :)
Это хороший учебник как для первого языка программирования, но если изучать Си зная другой императивный язык «с фигурными скобками», то эта книга бывает местами скучной.
Там слишком многого нет из современного Си. Это не особо важно как для первого знакомства (хотя такие вещи как stdbool.h, inline и _Static_assert лучше бы знать сразу), но важно для промышленного программирования. Designated initializers, variable length arrays, stdbool.h, restrict, inline (нет, там не так всё просто как вы думаете) — и это только C99. C11: модель памяти, atomics, потоки, _Static_assert, _Noreturn, _Alignas, alignof.
Да ну ладно?! Вам не нужен bool? Не нужен static assert? Не нужна удобная инициализация структур? Не нужно понимать что значит inline? Не нужно расставлять _Noreturn для оптимизации? Не нужно контролировать выравнивание?
Так там про указатели, динамическое выделение памяти, работу с динамическими массивами, структурами, строками, приведение типов и многопоточную обработку :)