Решил подучить,прояснить для себя Си.Просто книги, такие как modern-c или например Как программировать на C/C++ Дейтела, мне не очень заходили.Чтение и выполнение кода, приведенного в материале, мне не хвататает, возникает иллюзия понимания.Вроде бы и все прочитал, и все понятно, и понятно что надо память освобождать, но это достаточно абстрактное понимание.Поэтому,нашел C Caltech lectures хорошие и понятные лекции базового уровня и, что более важно задания, которые позволяют усвоить в какой-то степени теоретический материал, и memchecker который ловит утечки памяти, makefile готовые.Т.е.сложность подается дозировано, позволяя усвоить нужные концепции.


Также полезно

C Caltech assigments

  • Lab 5 это задача по pointer и динамическое выделение памяти.Нужно написать одномерный клеточный автомат в консоли, разбирается арифметика указателей,динамическое выделение памяти.
  • Lab 6 Задача,отсортировать односвязный список с помощью быстрой сортировки. После нее появляется какое-то представление о struct, освобождении памяти!Пришлось поломать голову над динамическим освобождением памяти, в этой задаче это чуть менее очевидно,где и как освобождать память,по сравнению с прошлой задачей. Lab 6 solution.Также для этой задачи добавил проверку по valgrind,чтоб запустить достаточно запустить make valgrind. Эта команда соберет докер образ,скомпилирует и запустит valgrind
  • Lab 7 Написать простую hashtable, вот здесь,то мне понадобилось научиться пользоваться дебагерром в CLion. Lab 7 solution
  • Lab 8 Написать простую стековую виртуальную машину. Ожидал сложного задания и тд,но по факту большую часть кода за тебя написали в template. Реализация заняла часа 2