
- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследовние
- •3) Базовые конструкции
- •12)Описание и определение функций
- •13)Назначение прототипа функции
- •14)Операторы
- •15)Массивы-конечная совокупность данных одного типа
- •20)Передача параметров в функции
- •24)Случаи, когда нельзя обойтись без указателей
- •2 5) Динамическое распределение памяти
- •27)Работа с указателями на примере строк
- •30)Сегмент данных для хранения констант
- •31)Функции стандартной библиотеки для работы со строками string.H
- •21) Функция strtok
- •33)Пример использования массивов указателей
- •22) Указатели на функции.
- •Стандартные операции , определенные для предпроцессора
- •Переопределение макросов
- •34)Тэги(tags)
- •37)Динамические структуры данных, основанные на структурах-двунаправленные списки
- •38)Представление списков в программе
- •39)Основные операции над двунаправленными списками
- •40)Инициализация структур
- •41)Объединения
- •38) Открытие потока ввода-вывода,
- •39)Форматированный и неформантированнй ввод и вывод
- •40)Работа с указателем текущей позиции в файле.
- •Главные признаки объектно-ориентированного подхода (Alan Kay).
40)Инициализация структур
struct klass { char name[20]; char klass_name; float bal; };
struct
Любая структура в языке си ( c ) должна начинаться с ключевого слова - struct, которое сообщает компилятору, что тут у нас будет структура. Все данные в структуре (struct) пишутся в фигурных скобках, и в конце ставится запятая с точкой (;). Советую сразу ставить запятую с точкой, что бы не было ошибок. Как вы видите, в структуре (struct) у нас находятся данные различных типов, но они объединены в логическую связь, так как в моем примере они являются определенным школьным классом. Данные в структуре должны иметь уникальные имена, но в различных структурах можно использовать одинаковые названия. Структура, которая создана выше не занимает в памяти компьютера места, так как мы, на самом деле, просто создали свой тип данных. Объявление структуры ни чем не отличается от объявления любого типа данных в языке си ( c ). Вот пример:
41)Объединения
Объединение – это облась памяти, которая используется для хранения переменных разных типов. Объединение позволяет интерпретировать один и тот же набор битов по разному. Объединение похоже на
структуру и в своем описании отличается от структуры тем, что вместо ключевого слова struct используется
слово union.
union имя_типа {определения_элементов};
Объединение отличается от структуры способом организации во внутренней памяти. Все элементы объединения в памяти начинаются с одного байта.
Объединение занимает столько памяти, сколько нужно для самого большого из его полей. Объединение иницилизируется по 1 полю .по этому порядок важен.
38) Открытие потока ввода-вывода,
Файл открывается при помощи fopen, которая возвращает информацию потока ввода-вывода, прикрепленного к указанному файлу или другому устройству, с которого идет чтение (или в который идет запись). В случае неудачи функция возвращает нулевой указатель.
Схожая функция freopen библиотеки Си выполняет аналогичную операцию после первого закрытия любого открытого потока, связанного с ее параметрами.
Они определяются как
FILE *fopen(const char *path, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *fp);
Параметр mode (режим) для fopen и freopen должен быть строковый и начинаться с одной из следующих последовательностей:
режим |
Описание |
начинает с.. |
||
r |
rb |
|
открывает для чтения |
начала |
w |
wb |
|
открывает для записи (создает файл в случае его отсутствия). Удаляет содержимое и перезаписывает файл. |
начала |
a |
ab |
|
открывает для добавления (создает файл в случае его отсутствия) |
конца |
r+ |
rb+ |
r+b |
открывает для чтения и записи |
начала |
w+ |
wb+ |
w+b |
открывает для чтения и записи. Удаляет содержимое и перезаписывает файл. |
начала |
a+ |
ab+ |
a+b |
открывает для чтения и записи (добавляет в случае существования файла) |
конца |
Значение «b» зарезервировано для двоичного режима С. Стандарт языка Си описывает два вида файлов — текстовые и двоичные — хотя операционная система не требует их различать (однако, для некоторых компиляторов, например LCC, указание 'b' при работе с бинарным файлом принципиально важно!). Текстовый файл — файл, содержащий текст, разбитый на строки при помощи некоторого разделяющего символа окончания строки или последовательности (в Unix — одиночный символ перевода строки; вMicrosoft Windows за символом перевода строки следует знак возврата каретки). При считывании байтов из текстового файла, символы конца строки обычно связываются (заменяются) с переводом строки для упрощения обработки. При записи текстового файла одиночный символ перевода строки перед записью связывается (заменяется) с специфичной для ОС последовательностью символов конца строки. Двоичный файл — файл, из которого байты считываются и выводятся в «сыром» виде без какого-либо связывания (подстановки).
При открытом файле в режиме обновления ('+' в качестве второго или третьего символа аргумента обозначения режима) и ввод и вывод могут выполняться в одном потоке. Тем не менее, запись не может следовать за чтением без промежуточного вызова fflushили функции позиционирования в файле (fseek, fsetpos или rewind), а чтение не может следовать за записью без промежуточного вызова функции позиционирования в файле. [1]
Режимы записи и добавления пытаются создать файл с заданным именем, если такого файла еще не существует. Как указывалось выше, если эта операция оканчивается неудачей, fopen возвращает NULL.