Язык си c
Язык Си
Все, что нужно знать для изучения Си — одного из старейших языков программирования — и его тонкостей.
Для чего хорош Си?
Язык Си обычно используется в довольно сложных задачах. В каких? Отобрали для вас самые популярные области применения Си.
Должен ли «настоящий» программист знать язык Си — отвечают эксперты
Си — обязательный язык для каждого разработчика или пережиток прошлого? Узнаём у экспертов, нужно ли всем программистам учить этот язык.
Вакансии, где нужны знания по теме «Язык Си»
Видеокурс для изучения языка Си с нуля
Курс подробно объясняет основы языка Си, включая функции, структуры, массивы, циклы, арифметические, логические операции и операции сравнения.
Фичи Rust, которых не хватает в C
Федерико Мена-Кинтеро, один из основателей GNOME, рассказывает, какие у языка C есть недостатки, что плохого в языке C относительно Rust, и объясняет, почему считает C очень и очень примитивным языком для современного ПО.
События и курсы
Макросы в Си: как, когда и зачем?
Чем макросы в Си лучше функций и наоборот: лучшие практики использования макросов, подводные камни и скрытые возможности.
Интересные проекты: математическая C-библиотека для разработки видеоигр
Проект MATHC — коллекция объектов для разработки 2D- и 3D- игр.
Интересные проекты: рендеринг изображений ASCII-символами
Однофайловая библиотека C/C++, которая позволяет преобразовывать изображение или видеокадр в печатные символы ASCII в режиме реального времени.
Интересные проекты: облачная файловая система pingfs
Где мои данные? Не могу сказать. Но они существуют? Надеюсь. Обзор «по-настоящему облачной» файловой системы pingfs.
Статический анализ кода: обзор инструмента OCLint
OCLint — это инструмент для статического анализа кода, написанного на С, С++ и Objective-C.
Курс «Углубленное программирование на C/С++»
Русскоязычный курс проекта «Технопарк Mail.Ru Group», посвященный продвинутым аспектам программирования на языках C/C++. Курс записан в 2014 году, лектор — Алексей Петров.
Курс «Основы программирования встраиваемых систем»
Русскоязычный курс, открывающий своим слушателям удивительный мир микроконтроллеров. Среди окружающих нас приборов все сложнее встретить такие, в которых их нет. Часы и светофоры, системы освещения, электронные игрушки и роботы, телевизоры…
«Шелл» на С: пишем командную оболочку для Unix
Многие считают, что сделать программу, которой будут пользоваться миллионы, очень трудно. Однако за любым, даже самым сложным, продуктом всегда стоит простая идея. Одним из них является командная оболочка, или «шелл». В этой статье мы расскажем, как написать упрощенную командную оболочку Unix на C.
Проект не для начинающих: пишем свой текстовый редактор с поиском и подсветкой синтаксиса на C
Предлагаем вашему вниманию серию англоязычных статей, в которой подробно разбирается процесс разработки собственного текстового редактора на языке C.
Графический интерфейс для GDB: обзор инструмента gdbgui
Современный браузерный интерфейс GDB (отладчик GNU) для языков C, C++, Go и Rust. Можно добавлять контрольные точки, просматривать трассировку стека и многое другое. Для этого нужно просто запустить gdbgui из терминала, и в браузере откроется новая…
Компилятор Си в одну инструкцию: обзор инструмента M/o/Vfuscator
M/o/Vfuscator компилирует программы в инструкции mov, и только в них. Инструмент ориентирован на язык Си и архитектуру процессора x86, но адаптивен и легко настраивается под другие языки и архитектуры.
Книги по языку Си для начинающих и не только
Язык Си — это очень мощный язык программирования, и к тому же один из самых популярных. Мы собрали подборку бесплатных книг для его изучения.
Зачем и как эффективно учить язык программирования Си: исчерпывающая подборка ресурсов для освоения
Многим кажется, что язык Си уже устарел. Однако, хоть Си редко встретишь в промышленном программировании, его существованием пронизано в IT буквально все.
Лучшие проекты, в которых стоит поучаствовать, чтобы примкнуть к Open Source движению и развить свои навыки. Часть третья. C, C++
Если вы интересуетесь жизнью Open Source сообщества и хотите к нему присоединиться, то эта серия подборок (которую мы продолжаем пополнять) придётся вам как нельзя кстати, ведь в ней собраны лучшие проекты…
Разбираемся в сложных объявлениях Си
Рассказывает Брайан Барто Выше вы можете увидеть список объявлений на языке Си. Совсем недавно я не мог сказать, что они означают. Теперь же я могу вполне уверенно объяснить их, изучив правила…
9 интересных трюков на Си, с которыми вы раньше не сталкивались
В этой статье мы рассмотрим несколько редких приёмов языка Си. О некоторых из них я раньше не слышал, и вы, скорее всего, тоже. Если ваш преподаватель или коллега хвастаются знанием…
Руководство по созданию ядра для x86-системы. Часть 2. Система ввода / вывода
Рассказывает Arjun Sreedharan В прошлой статье я писал о том, как создать простейшее x86-ядро, использующее GRUB, работающее в защищённом режиме и выводящее на экран строку. В этот раз мы подключим к ядру драйвер…
Два способа использования одноэлементных структур в Cи с пользой
В структурах языка Си очень много странностей, но, по большей части, они предсказуемы, полезны и понятны. Для тех, кто не знаком с Cи: структуры представляют собой наборы данных. Примером их…
Руководство по созданию ядра для x86-системы. Часть 1. Просто ядро
Рассказывает Arjun Sreedharan Давайте напишем простое ядро, которое можно загрузить при помощи бутлоадера GRUB x86-системы. Это ядро будет отображать сообщение на экране и ждать. …
Совершенно правдивая история о настоящем программисте, никогда не изучавшем Си
Рассказывает Уилл Шипли Мой юный друг Сэм – настоящий гений от программирования. Сэм знает Си! Впрочем, нужно сразу сделать пояснение: он еще не дипломированный специалист.
О пользе статического анализатора кода при написании программ
Многие программисты при написании кода совершают ошибки, и каким бы по размеру ни был проект, от незнания особенностей той или иной функции и невнимательности не застрахован никто. Для таких случаев…
Краткий справочник по языку Си
Начнём с комментариев…
// Однострочный комментарий
/*
Многострочный комментарий
*/
Булевые типы
true — верно
false — не верно
Подключение файлов с помощью #include
Файлы в будут подключаться из стандартной библиотеки.
Свои файлы необходимо подключать с помощью « двойных кавычек «.
Функции
Объявление функций должно происходить в .h-файлах или в начале .c-файла.
Точка входа в программу – это функция main(). Работа программы начинается с неё, вне зависимости от места расположения в коде.
Для вывода в консоль используется printf
%d – означает, что будем выводить целое число
n переводит указатель на новую строчку
int обычно имеет длину 4 байта
short имеет длину 2 байта
char имеет длину 1 байт
Одиночные символы заключаются в ‘ одинарные кавычки ‘
long как правило занимает от 4 до 8 байт
long long занимает как минимум 64 бита
float это 32-битное число с плавающей точкой (дробное число)
double это 64-битное число с плавающей точкой
Целые типы могут быть беззнаковыми
sizeof(T) возвращает размер переменной типа Т в байтах
sizeof(object) возвращает размер объекта object в байтах.
Если аргуметом sizeof будет выражение, то этот аргумент вычисляется во время компиляции кода (кроме динамических массивов)
size_t это беззнаковый целый тип который использует как минимум 2 байта для записи размера объекта
Выведет строку «sizeof(a++) = 4, где a = 1» (на 32-битной архитектуре)
Можно задать размер массива при объявлении
Можно обнулить массив при объявлении
Индексация массива происходит также как и в других Си-подобных языках
Массивы изменяемы, как и другие переменные
Массив может быть объявлен динамически, размер не обязательно рассчитывать при компиляции
Вывод программы (в зависимости от архитектуры) будет таким:
Строка – это просто массив символов, оканчивающийся нулевым (NUL (0x00)) байтом, представляемым в строке специальным символом ‘