- •4. Идентификаторы. Ключевые слова. Алфавит языка.
- •5. Этапы получения загрузочного файла. Понятие консольного приложения.
- •6.Стандартные типы данных. Типы данных для представления целых чисел.
- •20.Операторы цикла while, do … while. Варианты выражений. Бесконечные циклы.
- •21.Оператор цикла for. Варианты выражений. Тело цикла. Пустой оператор for. Оператор без тела цикла.
- •22. Операторы goto, break, continue, return. Варианты использования.
- •23.Массивы. Индексация, инициализация, размещение элементов в памяти. Определение размера массива.
- •24.Многомерные массивы. Инициализация многомерных массивов. Размещение элементов в памяти.
- •25.Строки. Представление строк. Длина строки. Варианты инициализации строк.
- •31.Область существования имени. Виды областей существования имени
- •32.Область видимости имени. Операция разрешения контекста.
- •33. Классы памяти.
- •34.Структуры. Элементы структуры. Массивы структур.
- •35.Структуры. Передача структур в функции.
- •36.Структуры. Битовые поля в структурах.
- •37.Объединения.
- •38.Перечисления.
- •39.Работа с файлами. Потоки. Буфер.
- •40.Библиотека stdio. Связь с файлами. Открытие и закрытие файла.
- •41.Библиотека stdio. Текстовые файлы – чтение и запись.
- •42.Библиотека stdio. Форматированный ввод/вывод.
- •43.Библиотека stdio. Функция fseek().
- •44.Работа с файлами. Переключение ввода/вывода.
- •45.Операторы времени компиляции inline и typedef.
- •46.Директива препроцессора #define. Макросы с формальными параметрами.
- •47.Директивы условной компиляции. Директивы #if, #else, #elif и #endif
35.Структуры. Передача структур в функции.
Передача членов структур функциям
При передаче функции члена структуры передается его значение.
{
int y;
char s[10];
} mike;
Например, каким образом каждый член этой структуры передается функции:
func1(mike.y); /* передается целое значение y */
func2(mike.s); /* передается адрес строки s */
func(mike.s[2]); /* передается символьное значение s[2] */
Передача целых структур функциям
Когда в качестве аргумента функции используется структура, то для передачи целой структуры используется обычный способ вызова по значению. Это, конечно, означает, что любые изменения в содержимом параметра внутри функции не отразятся на той структуре, которая передана в качестве аргумента.
36.Структуры. Битовые поля в структурах.
Битовое поле может быть членом структуры или объединения. Оно определяет длину поля в битах:
тип имя : длина;
Пример:
struct lab {
unsigned : 4;
unsigned cts: 1;
unsigned dsr: 1;
} status;
Здесь тип означает тип битового поля, а длина — количество бит, которые занимает это поле. Тип битового поля может быть int , signed, bool и unsigned .
37.Объединения.
Объединение — это место в памяти, которое используется для хранения переменных, разных типов. Объединение дает возможность интерпретировать один и тот же набор битов не менее, чем двумя разными способами. Объявление объединения в общем виде выглядит так:
union тег {
тип имя-члена;
тип имя-члена;
.
.
} переменные-этого-объединения;
Например:
union u_type {
int i;
char ch;
};
Это объявление не создает никаких переменных. Чтобы объявить переменную, ее имя можно поместить в конце объявления или написать отдельный оператор объявления. Чтобы с помощью только что написанного кода объявить переменную-объединение, которая называется cnvt и имеет тип u_type , можно написать следующий оператор:
union u_type cnvt;
38.Перечисления.
Перечисление — это набор именованных целых констант.
Перечисление в общем виде выглядит так:
enum тег {список перечисления} список переменных;
Здесь тег и список переменных не являются обязательными. (Но хотя бы что-то одно из них должно присутствовать.) Следующий фрагмент кода определяет перечисление с именем coin (монета):
enum coin { penny, nickel, dime, quarter,half_dollar, dollar};
Тег перечисления можно использовать для объявления переменных данного перечислимого типа. Вот код, в котором money (деньги) объявляется в качестве переменной типа coin :
enum coin money;
Первый элемент перечисления имеет значение 0. Поэтому, при выполнении кода
Однако для одного или более элементов можно указать значение, используемое как инициализатор. Для этого после перечислителя надо поставить знак равенства, а затем — целое значение. Перечислителям, которые идут после инициализатора, присваиваются значения, большие предшествующего: значение 100:
enum coin { penny, nickel, dime, quarter=100,half_dollar, dollar};
вот какие значения появились у этих элементов:
penny 0
nickel 1
dime 2
quarter 100
half_dollar 101
dollar 102