- Что такое переменная? Зачем разные типы?
- Таблица сопоставления имени переменной и адреса в памяти
- rvalue и lvalue. Присвоение одной переменной другой
- Что такое указатели
- Указатели на переменные разных типов
- Взятие адреса, разыменование указателя
- Передача аргументов в функцию через указатель
- Массивы и указатели
- Арифметика указателей
- Связь между массивами и указателями
- Память - регистры, стек, куча
- Магия на полях структур, отрицательные индексы массива, перемещение по стеку
- Строки: массивы символов vs нуль-терминальные строки
- Динамическое выделение памяти: malloc, calloc, alloc(стек), new
- Указатели на функции и зачем оно нужно
Переменная - это имя для некоторой области памяти (имя переменной в терминах языка это идентификатор). Каждая переменная имеет тип, чтобы сказать компилятору сколько нужно памяти для неё выделить и как интерпретировать те биты, что лежат в этой области памяти.
У переменных есть еще область видимости (scope) - то есть пределы в которых эта переменная имеет смысл. И время жизни (extent, связывание), определяющее когда программа создает и удаляет перменную.
Переменные можно объявлять:
- вне функции. Global scope. Global extent.
- внутри списка аргументов функции. Local scope. Bounded extent. Живет только с момента когда функция была вызвана, до момента, когда функция завершит выполнение.