- •1) Структурные типы данных и переменные этих типов .-
- •2) Передача структурных переменных функциям .-
- •3)Указатели на структурные переменные .
- •4) Массивы структурных переменных .
- •6)Поля битов. Средство typedef-
- •7) Понятие макроподстановки .
- •8) Включение файлов .
- •9)Условная компиляция.
- •12)Обработка двоичных файлов . Последовательный и произвольный доступ.
- •2)Произвольный доступ.
- •13)Аргументы используемые по умолчанию .-
- •14)Использование ссылок .
- •15)Встроенные функции.-
- •16)Операция разрешения видимости .(::)
- •17)Пространства имен.
- •18)Перегруженные функции.-
- •20)Определение классов.
- •21)Элементы класса.
- •22) Способы доступа к элементам класса .
- •23) Конструктор и деструктор.
- •24) Конструктор копии . Операция присваивания.-
- •25) Преобразование объектов класса в другие типы и их получение из других типов .
- •26)Перегрузка операций .
- •27)Дружественные функции.
- •28)Наследование классов .
- •29)Обработка исключительных ситуаций .
- •30)Визуалка.
6)Поля битов. Средство typedef-
Поле битов – несколько переменных , хранящихся рядом внутри одного машинного слова . Синтаксис описания в поле битов и доступа к ним базируется на синтаксисе структурном .
Struct {unsigned int a:1;
Unsigned int b:1;
Unsigned int c:2;
}flags
Поля могут участвовать как обычные числа , но не могут быть массивами и не имеют адресов .
Язык Си предоставляет программисту возможность помимо встроенных типов данных самому заводить новые типы данных подходящие для конкретных задач. Кроме того в языке существует возможность переименовывать любой тип данных , как встроенный , так и определенный программистом . Именно для этой цели служат средства typedef.
Дикларация typedef не создает новый тип , а только сообщает новое имя для типа , которое уже существует . Переименование типов делается для того , чтобы давать уже существующим типам имена , максимально отражающие смысл , происходящего в программе . Новое имя типа можно использовать на равнее со старым типом .
Например у нас имеется массив[100] , указав тип double мы выделили память под каждый элемент этого массива , а используя typedef мы экономим память и выделяем тип как под одно целое .
typedef double DArray[100];
...
DArray A, B, C;
7) Понятие макроподстановки .
Понятие макроподстановки – имеет вид : #define_имя_заменяющий текст.
Макроподстановки используется для простейшей замены во всех местах , где встречается имя , вместо него будет помешен заменяющий текст . Имена в макроподстановке задаются по тем же правилам , что и имена переменных . Заменяющий текст может быть произвольным .
#define PI 3.14
Void main()
{printf (“%f\n”,PI);
}
Обычно заменяющий текст находится в строке , в которой расположено слово #define , но в длинных определениях его можно продолжить на следующих строчках , поставив в конце каждой продолжаемой строки «\»
#define matr for (i=1;i<=n;i++)\
For (j=1;j<=m;j++)
Область действия имени в макроподстановке простирается от данного определения , до конца файла . В определение макроподстановки могут фигурировать более ранние #define определения. Подстановка осуществляется только для тех имен , которые расположены вне текста , заключенных в «». Макроподстановку можно определить с аргументами , вследствие чего заменяющий текст будет варьироваться в зависимости от задаваемых параметров .
#define max(A,b) ((A>(B)?(A):(B))
Хотя обращение к max выглядит , как обычное к функции оно будет вызывать только текст значений каждый формальный параметр будет заменяться соответствующим аргументом . так строка x=max(a+b,c+d) будет заменена на строку x=((a+b)>(c+d)?(a+b):(c+d)).
То , что было в define можно скрыть от предпроцессора с помощью директивы undef_имя. Как правило это делается , чтобы перекрыть макроопределение настройки функции с этим именем .
#define vasia A
Void main ()
{int vasia;
#undef vasia
Vasia ()
}
Vasia (){….}
8) Включение файлов .
Директива #include предписывает компилятору поместить на ее место содержимое другого файла . Обычно эта директива применяется в так называемом включенном или заголовочном файле *.h . Однако существует возможность включить в текст программы любой другой исходный файл .
#include <имя файла> или #include “имя файла”. Если имя файла не является полным именем , то в первом случае поиск происходит только в пределах специфицированных каталогах включаемых файлов . При использовании кавычек сначала просматривается текущий каталог , а затем каталоги , включающих файлов .