Please enable JavaScript.
Coggle requires JavaScript to display documents.
C (Типы данных в С, Массивы и указатели, Структура кода, Ввод и вывод…
C
Типы данных в С
-
-
-
-
ptrdiff_t
нет гарантий, что результат вычитания указателей помещается в ptrdiff_t, поэтому круг применения ограничен
-
-
-
Контейнеры
Типы массивов не совпадают с указателями, но:
Неявное преобразование. Тип-массив неявно преобразуется в указатель.
есть специальный синтаксис чтобы сформулировать ограничение "на вход подаётся массив в котором как минимум N элементов"
-
Константные типы
в случае с указателями const может относиться или к тому, что указывает (указатель) или к тому, на что указывает:
int const x значит "изменяемый указатель на неизменяемый int". Нельзя после этого написать x = 10, но изменять сам x можно.
То же самое: const int* x.
int* const x = &y значит "неизменяемый указатель на изменяемый int". Можно менять значение по указателю, но перенаправлять указатель на другую ячейку памяти -- нет.
-
Правило. const слева от звёздочки защищает то, на что мы указываем; справа -- сам указатель.
Массивы и указатели
int x = 10; // переменная типа int
int px = &x; // переменная типа int.
// С помощью оператора & мы берём адрес переменной x.
dereference, разыменовывание *
-
-
Массивы
int p = array + 40; // адрес 40-го элемента
int q = &array[60]; // адрес 60-го элемента (альтернативная форма)
p[i] означает то же самое, что *(p + i)
&p[i] означает то же самое, что p + i
-
-
-
Структура кода
-
-
-
-
Препроцессор
include
директива #include <file.h> ищет файл в стандартных директориях, на которые настроен компилятор (их можно доопределять)
include "file.h" ищет файл сначала в текущей директории, затем в стандартных директориях из прошлого пункта.
Как правило, файлы библиотек (как стандарной, так и сторонних) пишутся в угловых скобках, а файлы из самого проекта -- в кавычках.
-
-
-
-
-
-
-
-