08.0 (Russian conspect)
В си работают такие конструкции как +=, -=, *=, /=, причем левая часть выражения — это место присваивания, а правая присваемое вычисленное значение.
Важно заметить, что также как и в питоне (а точнее в питоне так же си) выражение a+=b; более эффективно чем a = a+b; хотя разница небольшая.
Очень важны операции увеличения на единицу a++; во многих архитектурах это операция аппаратная.
Стоит также знать разницу между b=a++; и b=++a; так как в первом случае мы сначала считаем потом увеличиваем на один, во втором мы сначала увеличиваем a на единицу и только потом присваиваем.
Операция присваивания в языке си имеет возвращаемое значение.
Операция с запятой a = b, c; возвращает первый элемент, перечисленный через запятую.
НО лучше не использовать операцию с запятыми, если без неё можно обойтись.
void если не хотите никого возвращаемого значения или void это такой указатель в котором хранится какой-то адрес, но мы не знаем какого он типа.
Указатель типа void не подвержен адресной арифметике (не можете прибавить 1).
Модификатор static. Если модификатор static стоит перед глобальной переменной, то статическая глобальная переменная не попадает в список глобальных имен.
Также функции, которые мы не хотим экспортировать в другой файл имеют модификатор static то есть они не видны за пределами файла.
Второе назначение, если вы описываете локальную переменную как static она будет размещаться не на стеке, а в памяти.
Напоминаю, что функции возвращают некоторые значения, а вы можете на это “забивать”.
Если вы хотите, чтобы функция могла что-то перезаписать то вам нужно передать не переменную а указатель.
Также существует ситуация как указатель на указатель.
В си фигурные скобки это просто скобки – просто способов объединить несколько операторов. Фигурные скобки можно убрать если оператор один.
Три оператора цикла два типа while и do while с предусловием и постусловием, for. do while встречается редко – единственное применение это цикл по вводу – сначала вводите потом проверяете.
Цикл for 4-х компонентный – инициализация, условие, тело и изменение – он полноценный.
Оператор switch не стандартный так как у него не одна ветка в отличии от других операторов.
Помните, что в си: перевод строки это отдельный символ, пока вы его не нажмете, ввод не обрабатывается, если при воде произошел конец файла то EOF что по договорённости -1.