
- •Какие типы данных Вы знаете?
- •Как узнать размер типа?
- •Что такое модель памяти? Какие модели памяти Вы знаете?
- •Назовите размеры стандартных типов в используемой Вами модели памяти.
- •Что такое оператор typedef?
- •Для чего предназначена директива препроцессора #define?
- •Что такое сигнатура функции?
- •Что означает директива #include?
- •Что такое #if, #ifdef, #endif? Приведите пример применения.
- •Как можно выделить память?
- •Как устроен односвязный список?
- •Что такое стек? Как он устроен, какие операции в нем есть?
- •Что такое очередь? Как она устроена? Какие операции в ней есть?
- •Что такое куча (пирамида, Heap)?
- •Какова стоимость операций с кучей?
- •Как устроена очередь с приоритетами?
Теорминимум¶
Общие вопросы¶
Какие типы данных Вы знаете?
Численные знаковые целые
int, short, char, long, long long
Численные знаковые дробные
Float, double, long double
Unsigned + type
Char так же может использоваться как символьный тип.
________________________________________________________________________________
Как узнать размер типа?
C помощью функции sizeof (аргумент (например, int, float, char))
________________________________________________________________________________
Что такое модель памяти? Какие модели памяти Вы знаете?
Модель памяти в языке Си — система хранения объектов в языке Си.
Способ хранения объекта в языке Си определяет его время жизни. Объект имеет постоянный адрес и сохраняет своё последнее значение. Запрещается обращаться к объекту, который перестал существовать, при этом, если при работе с объектом использовался указатель, его значение остаётся неопределённым.
Существует три способа хранения объектов: автоматический, статический и динамический.
• Статическое выделение памяти: пространство для объектов создаётся в сегменте данных программы в момент компиляции; время жизни таких объектов совпадает со временем жизни этого кода. Изменение таких объектов ведёт к ошибке времени выполнения.
• Автоматическое выделение памяти: объекты можно хранить в стеке; эта память затем автоматически освобождается и может быть использована снова, после того, как программа выходит из блока, использующего его.
• Динамическое выделение памяти: блоки памяти нужного размера могут запрашиваться во время выполнения программы с помощью библиотечных функций malloc, realloc, calloc и free из области памяти, называемой кучей. Эти блоки освобождаются и могут быть использованы снова после вызова для них функции free.
________________________________________________________________________________
Назовите размеры стандартных типов в используемой Вами модели памяти.
Численные знаковые целые
int - 4
short - 2
char -1
Численные знаковые дробные
float – 4
double – 8
long - 4( в С )
long long – 8
long double - 12( в С ) )
Что такое оператор typedef?
typedef описание
Под описанием подразумевается любое сколь угодно сложное описание данного имени. Но в этом случае имя будет обозначать не имя данного, а имя нового типа, который соответствует типу данного и может быть использован в качестве имени типа в любых других определениях данных. Рассмотрим пример:
typedef double DArray[100];
...
DArray A, B, C;
typedef double DArray[100];
...
DArray A, B, C;
Если бы в первом описании отсутствовало бы ключевое слово typedef, то имя DArray представляло бы имя массива из 100 элементов типа double, для которого бы выделялся соответствующий объем памяти. При наличии typedef компилятор будет воспринимать имя DArray как имя нового типа данных, а именно, типа массива из 100 элементов типа double. Очевидно, никакой памяти при этом не выделяется.
Во втором описании используется имя нового типа DArray. Каждое из определяемых имен A, B и C будет считаться массивом из ста элементов типа double, и для каждого из них будет выделен соответствующий объем памяти.
_______________________________________________________________________________