- •Данные Скалярные данные Целые данные: char, short, int, long.
- •Указатели
- •If( целое_выражение )
- •Оператор продолжения цикла
- •Функции
- •Указатели ,строки
- •Структуры, списки.
- •Переименование типов
- •Списки.
- •Работа с файлами
- •6.2 Описание и передача параметров
- •6.4 Указатель на функции
- •7.0 Переименование типов. Классы памяти. Область видимости
- •7.1 Переименование типов
- •7.2 Классы памяти:
Данные Скалярные данные Целые данные: char, short, int, long.
Количество битов для целых в языке не фиксировано, но обязательно соотношение: sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long).
Для IBM PC разме, соответственно: 8, 16, 16 или 32, 32 бита.
К описателям целого типа может быть добавлен модификатор unsigned (беззнаковый).
Операции допустимые для целых типов:
Арифметика: +, –, *, / (с отбрасыванием дробной части), % (взятие по модулю);
Логика: && (И), || (ИЛИ), ! (НЕ)), здесь – 0-ложь, не равно 0 значит истина; результат: 0 - ложь, 1 - истина;
Например: a=5, b=0, тогда a||b=1, а .a&&b=0
Побитовые операции: & (И), | (ИЛИ), ~(НЕ), ^(ИСКЛЮЧАЮЩЕЕ ИЛИ), >>, << побитовые сдвиги.
Например: a=2, b=5, a&b=0 ,a|b=7 .
a>>b сдвиг вправо содержимого переменной a на b разрядов. Если a – знаковое, сдвиг вправо также знаковый, т.е. в знаковый разряд расширение знака.
Сравнение: < , <= , >, >=, != (не равно), == (равно)
В качестве операндов любые целые числа, в качестве результата 0 или 1
Вещественные данные: float, double
Всегда перед выполнением операции, float преобразовывается в double
Операции: +, –, *, /, <, <=, >, >=, != ,==. Со сравнениями на равенство/неравенство надо быть осторожным.
Определение данных:
тип имя1, ...;
Например:
int a,b;
char c;
float f1, f2;
Структурирование данных
Массивы:
Массивы: одномерные, многомерные
Определение:
тип имя[размер1][размер2]…;
Например:
int а[5][3], с[20];
здесь в квадратных скобках [количество элементов]
Все индексы массивов начинаются с 0, т.о. с[0] – первый элемент, с[19] – последний элемент.
Обращение: а[индекс1][индекс2].
В памяти быстрее меняется последний индекс.
Структуры:
Описание:
struct имя_структуры{
тип_поля1 имя_поля1;
...;
};
Здесь: имя_структуры – имя структуры, имя_поля1 – имя поля
Тип поля: как скалярные, так и структурные, т.е. допустимо вложенное описание.
Описание не приводит к выделению памяти.
Определение структурной переменной:
struct имя_структуры имя1, имя2, …;
Эта строчка уже резервирует память.
Доступ к переменным: (к полям)
имя1.имя_поля1 – доступ к полю имя_поля1 структурной переменной имя1. Выражение имеет тип соответствуюющего поля.
Указатели
Указатели в языке типизированы (т.е. указатель указывает на объект определенного типа)
Определение переменной типа указателя на объект определенного типа:
тип *имяР, …;
Например:
int *Рi;
Pi – указатель на целое, т.е. может содержать адрес целой переменной
Операции:
Взятия адреса: & (унарная операция)
Разименование (получение значения по указанному адресу): * (унарная операция)
Например:
Рi = &a; a – целая переменная, Рi – указатель на целое
a = *Рi; a – целая переменная, Рi – указатель на целое
ВЫРАЖЕНИЯ
Правильная последовательность констант, имен переменных и знаков операций.
Пример: а+5 , S.имя_поля
Операция присваивания = : а=5. Значением операции является результат присваивания.
ОПЕРАТОРЫ
В языке все операторы завершаются символом «точка с запятой»
Оператор-выражение
Если после любого выражения поставить «точка с запятой», то получится оператор-выражение.
Пустой оператор
Одинокая «точка с запятой»
Блок
или составной оператор – последовательность операторов, заключенная в фигурные скобки { }
Условный оператор