alexander_lamdan
@alexander_lamdan
Full Stack Developer

Как правильно практиковаться по си, если некоторые материалы жестко завязаны на следующих материалах?

Итак я изучаю си уже месяц, с такими темпами я уже практически выучил по докам, по учебникам 60-70% материала.

И тут я впал в ступор когда дошел до указателей, до структуров, enum, unions, указателей на функции, пустые указатели, указатели в структурах, создания своих заголовочных файлов.

Так как я обучаюсь сразу на 2-3 русских ресурсах по си, 3 по англоязычным ресурсам, один gcc ресурс официальный и видео в ютубе.

Так как половину материала и там и там нехватает, где то приходится дополнять.
Не в одном ресурсе нету про cmake, make, autotools, m4, как правильно создавать свои заголовочные файлы, динамическая память(malloc, alloc, calloc, free), будто это вообще ненужно.

И когда я решил попрактиковаться скажем с указателями по материалу, то не в одном ресурсе нету никакой практики, есть тупо код с примерами, который они показывают вот тут указатель, так вызываешь указатель и все.

Когда я решил сам себе создавать задачки скажем по указателям на функции, я столкнулся с проблемой, что мне приходится заново возвращаться и перечитывать материал, потому что самому в голову ничего не лезет, а следующие материалы просто сильно завязаны на предыдущих.

Гугление в гугле по практике на си нет смысла искать потому что там сразу тебе дают практику к которой не хватает остальной части материала.
То есть приходится лезть в следующие материалы, чтобы практиковаться по си и решать задачки.

Когда я решил приступить к созданию своих маленьких для практики проектов, я столкнулся с вещью что половину вещей которые объясняли на этих ресурсах очень мало давали практики или ее вообще не было, и приходилось часто гуглить более подробные объяснения про то как создать свой хедер файл, как правильно оформлять хедер файл, как правильно читать опции с консоли когда пользователь вводит данные и многое другое.

И теперь я не знаю что делать, по идее 60-70% материала знаю, готов приступить к созданию своих проектов, понимаю код других открытых программ как vlc, curl, php-src и многих там с гитхаба программ на си, но когда начинается реальное решение проблем, приходится заново все переучивать потому что нету никакой как я говорил практики, и чтобы дополнить весь материал, нужно лезть в следующий, а вот нынешний материал так и не усвоил, так как нету практики и понимания

Пасибо за помощь
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ответы на вопрос 5
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
cmake, make, autotools, m4

Autotools и cmake к C вообще слабо относятся - это системы сборки, с их помощью можно делать все, что угодно, вовсе не обязательно на С, хотя конечно больше всего они под него заточены. Читать надо доки по ним, смотреть примеры сборочных файлов, там все довольно просто.
"Видео в ютубе" - это не обучение. Это мультик или сиськи можно посмотреть на ютубе. Язык изучается по литературе, бумажной или в электронном виде.
Есть замечательная книга - Уэйт, Прата, Мартин "Язык С". Она конечно далеко не новая, но основы языка с тех пор не изменились.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
build engineer
приходится заново все переучивать

Прочитать - не значит изучить. Изучить - означает понять и применить на практике, чтобы понимание было интуитивным (рефлективным).
Месяц - очень мало, особенно если большую часть времени вы читаете. Больше пишите кода.
Чужие примеры решать не всегда удобно, поскольку не всегда понятно зачем это.
Ставьте перед собой маленькие задачки, и решайте их. Когда напишете несколько программ и почитаете примеры похожих, увидите какие есть другие подходы. Тут и начнет приходить осознание зачем это нужно.
Ответ написан
@Karpion
Ну, структура - это примерно как массив. Только элементы структуры вызываются не по номеру, а по имени; и могут иметь разные типы.

Указатель - это как бы индекс массива, причём массивом является вся оперативная память. Лично я зашёл в это понятие через ассемблер. Однако, в общем случае указатель бывает более сложным объектом, чем просто адрес в памяти.

Мне кажется, Вам надо найти толкового учителя. Учиться самостоятельно - это хорошо, но учитель тоже нужен.
Как вариант - можно поискать среди профессиональных учителей. Многие будут рады мотивированному ученику (хотя большинство учителей просто "отбывает номер" и хочет скорее домой - так что найти получится явно не с первой попытки).
Ответ написан
dimonchik2013
@dimonchik2013
КАКОЙ ТЫ ДИВАН?
братан, попробуй Go

входит мягко и почти неисковеркан сахаром / костылями других языков
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы