Началось обсуждение как подборка некоторых учебных примеров кода, обращающих внимание на всякие тонкости языка C, на которые хотелось бы обратить внимание начинающих ... напимер:
- различные представления одних и тех же данных в RAM когда на них накладываются предположения различной типизации;
- запись бесконечных циклов (в разной форме) и предпочтительность бесконечных циклов традиционным с условиями в заголовках;
- запись циклов без тела (когда все действия записаны в условиях);
и т.п.
Т.е., это отчасти элементы трюков ... но их хорошо бы научиться видеть, замечать, и понимать в коде.
Но дальше этот набор ... "задрочек", простите за выражение, расширялся, обсуждение уже перевалило за 6 страниц форума, и начало дополняться такими подробностями, что не всегда упоминаются в широкой литературе...
Так что и название темы "вопросы начального уровня" уже перестало соответствовать наполнению ... но не менять же название?
![Подмигивает ;-)](./images/smilies/icon_e_wink.gif)
Теперь это уже ... что-то типа: "реализация на C всяких тонких возможностей".
Ну что ещё вообще можно сказать нового про язык C???, которого год рождения - 1969г., год зрелости - 1973г., на котором написано кода больше чем на любом другом языке отдельно взятом (все UNIX-like OS + весь GNU софт + множество свободных проектов + ...)
Оказывается - можно
![Подмигивает ;-)](./images/smilies/icon_e_wink.gif)
- ... такого, что появилось в более поздних стандартах (C99): complex и long double типы значений и др. - что не упоминается в учебниках 20-30 летней давности и 10-го издания, по которым все и учатся ... и о том как эти типы можно использовать куда более широко - тот же complex как представление 2D-координат точек ... чем, по существу, числа complex и являются;
- ... того, что сложилось как "тенденция" последних лет ... например использование циклических двухсвязных списков везде в ядре Linux, вместо самых разнообразных (линейных односвязных и др.) списков, которые и описываются везде в книгах ... и это (из kernel Linux) очень здоровая тенденция, строить на таких списковых структурах любые ссылочные (динамические) структуры;
- ... то, что не является какой-то спецификой С, а есть свойством (почти) любого языка программирования - это уже уже из области алгоритмики ... но на что недостаточно обращают внимание излагая C: использование рекурсии, нисходящая и восходящая рекурсии, оценка достижимой погрешности при итерационных вычислениях и т.п.
В теме их 6-ти страниц обсуждения множество примеров кода на все эти случаи ... большинство из этих примеров достаточно детально там обсуждается.
Рекомендую поглядеть в тему язык C в Linux: вопросы начального уровня.
![Подмигивает ;-)](./images/smilies/icon_e_wink.gif)
... и указать на ещё какие тонкие моменты (как языка так и алгоритмики), которые следовало бы иллюстрировать показательными примерами кода.