- •1. Лексические основы языка Си. Константы и модификаторы3. Выражения
- •2. Структура программы на языке Си. Функция main.
- •3. Функции. Структура функций. Разновидности. Особенности использования.
- •4. Типы данных. Классификация типов.
- •5. Базовые типы данных. Определение имени типа. Перечисление.
- •6. Представление данных в памяти компьютера.
- •7. Явное / Неявное преобразование типов. Абстрактный описатель.
- •8. Операторы. Классификация операторов. Приоритеты операторов и порядок их выполнения.
- •9. Инструкции языка Си, их классификация. Простые инструкции.
- •10. Инструкции языка Си, их классификация. Составные инструкции.
- •11. Производные типы данных. Статические массивы. Особенности использования массивов в функциях.
- •Статические массивы
- •12. Динамические массивы. Особенности обработки динамических массивов.
- •13. Производные типы данных. Указатели. Особенности использования. Адресная арифметика.
- •14. Операции над указателями. Указатели и модели памяти. Модификаторы.
- •15. Массивы и указатели. Передача и возврат параметров в функцию.
- •16. Указатели на функции. Особенности использования.
- •17. Указатели на указатели. Косвенная адресация. Многоуровневые ссылки.
- •18. Динамические структуры данных. Списки. Особенности использования.
- •19. Строки. Операции над строками. Указатели на строки.
- •20. Структурные типы данных: структуры. Особенности использования.
- •21. Структуры и объединения. Особенности использования.
- •22. Структуры. Массивы структур. Передача массивов структур в функции.
- •23. Указатели и структуры. Передача структур по указателю.
- •24. Структура битовых полей. Особенности использования.
- •25. Основы файловой системы: файл, каталог, дисковод, полное имя файла, внутреннее представление информации в файле. Типы файлов.
- •26. Файлы. Особенности обработки файлов последовательного доступа.
- •27. Файлы. Особенности обработки файлов произвольного доступа.
- •28. Память. Классы памяти. Модификаторы классов памяти. Область видимости, время жизни и место размещения объекта в памяти.
- •29. Передача параметров в функцию main. Аргументы командной строки. Директивы препроцессора.
- •30. Функции с переменным списком параметров. Механизмы передачи параметров в функции с переменным списком параметров.
- •Void va_start(arg_ptr,prav_param);
- •Va_list arg_ptr;
- •31. Перегрузка функций. Встроенные функции.
- •32. Передача в функции аргументов по умолчанию.
- •33. Шаблоны функций. Особенности и использования.
- •1. Достоинства, отличительные особенности и сравнительная характеристика языка программирования Си.
- •8. Точка входа в программу.
- •9. Создание файла проекта. Заголовочные файлы и файлы реализации. Законы видимости идентификаторов.
- •Назначение
- •10. Создание файла проекта. Объектные файлы. Раздельная компиляция. Make-файлы.
- •11. Оптимизация кода – алгоритмы, методы и приемы программирования.
- •12. Этапы сборки приложения с использованием компилятора gcc в среде разработки Linux / qt Creator.
- •13. Особенности сборки программы в среде разработки qt-Creator.
- •14. Контроль ошибок в процессе сборки программы: ошибки сборки, ошибки компиляции, утечки памяти, выход за границы,…
- •Пример использования
- •15. Интеграция программ. Использование ассемблерных вставок, вставок для мк. Си-код для гаджетов.
- •16. Особенности использования, преимущества и недостатки кроссплатформенной среды разработки qt creator.
- •17. Особенности использования, преимущества и недостатки компилятора gcc.
- •18. Основные принципы и подходы технологии событийного программирования.
- •19. Особенности среды визуального программир
- •Модель программирования Windows Forms
- •Приложение "Hello World" с Windows Forms
- •20.Управляемый код и данные. Особенности создания приложений в среде Framework .Net - единый каркас среды разработки
- •__Gc arrays
- •__Value
- •Интерфейсы
23. Указатели и структуры. Передача структур по указателю.
Все описания и необходимую на ваш взгляд инфу можно взять из предыдущей главы.
Как и любой другой элемент, структуры хранятся в ячейке памяти (размером, равным размеру данной структуры), имеющей определённый адрес. Естественно, можно определить указатель на эту ячейку, написав его тип, чтобы он, указатель,“знал”, какое место этой ячейкой занимается. Делается это так:
my_struct *p;
Для доступа к элементу по адресу используется конструкция *p, как и для любого другого указателя. К полю структуры можно обратиться следующим образом:
(*p).<имя поля>
или, так как указатели на структуры используются довольно часто, конструкцией
p -> <имя поля>
Передача структур по указателю в функцию осуществляется также, как и с массивами, т. е. по сути указатель на структуру и есть указатель за первый элемент одноэлементного массива.
print(p);
void print(my_struct *p)
{
printf(“Содержимое целочисленного поля ‘а’ структуры my_struct ячейки по адресу p %i”, p->a);
}
24. Структура битовых полей. Особенности использования.
Битовые поля являются удобным средством обработки запакованных данных.
Рассмотрим сразу на примере. Пусть имеем структуру:
enum WEEKDAY {MONDAY, TUESDAY, ...}; // дни недели
struct date
{
unsigned short year;
unsigned char month;
unsigned char day;
WEEKDAY wday;
bool isHoliday;
};
Подобная структура займёт 12 байт, хотя для хранения полезной инфы мы используем всего 25 бит. Поэтому мы можем упаковать эти данные (аналогично записям в ЯА) в 4 байта, но работать вручную с этими наборами битов (короткими переменными) в 4 байтах очень неудобно, поэтому рассмотрим пример использования битовых полей.
Особенности использования:
под полем имеется в виду отдельно каждая короткая переменная
для каждой переменной отводится не больше битов, чем заказал программист
несколько таких логически разных переменных хранятся в одной физической переменной подходящей длины
компиллятор за программиста выделяет нужное количество битов и выполняет все битовые операции и сдвиги, извлекая и запаковывая значения.
Синтаксис объявления:
<тип> [<идентификатор>] : <размер поля в битах>
Далее, что называется, кому интересно, прочитайте статью http://cpp.com.ru/shildt_spr_po_c/07/0707.html =)
Информация взята с сайта http://cpp.com.ru и из книжки Полубенцевой Марины “C/C++. Процедурное программирование”
25. Основы файловой системы: файл, каталог, дисковод, полное имя файла, внутреннее представление информации в файле. Типы файлов.
Фа́йловая систе́ма — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании.
Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Классификация файловых систем:
Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Поскольку доступ к дискам в разы медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например в ext3,ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах.
Файл — блок информации на внешнем запоминающем устройстве компьютера, имеющий определённое логическое представление, соответствующие ему операции чтения-записи и, как правило, фиксированное имя (символьное или числовое), позволяющее получить доступ к этому файлу и отличить его от других файлов.
Полное имя файла: <имя файла>.<расширенише> (например stdio.h).
Из лекций о типе FILE:
FILE *f;
typedef struct
{
short level; //уровень буфера
undigned flags; //флаги статусного файла ввода/вывода (я хз что это)
char fd; //дескриптор файла
unsigned hold; // предыдущий символ, если нет буфера
short size; // размер буфера
unsigned char *buffer; //адрес буфера
unsigned char *curp; // текущий указатель в буфере
unsugned istemp;
short token; // для проверки корректности файла
} FILE;
Катало́г — объект в файловой системе, упрощающий организацию файлов. Типичная файловая система содержит большое количество файлов и каталоги помогают упорядочить её путём их группировки.
Каталог, прямо или косвенно включающий в себя все прочие каталоги и файлы файловой системы, называется корневым.Текущим называется каталог, с которым работает ОС, если ей не указать другого каталога.Родительским каталогом называется каталог, в котором находится текущий.
Дисковод — устройство компьютера, позволяющее осуществить чтение или запись информации на носители информации. Основное назначение дисковода, в рамках концепции иерархии памяти — организация долговременной памяти. Основная характеристика дисковода — объём дискового пространства (объем памяти), измеряемый в байтах.
Типы файлов
В различных операционных и/или файловых системах могут быть реализованы различные типы файлов; кроме того, реализация различных типов может различаться.
По одним критериям различают:
«Обыкновенный файл» — файл, позволяющий операции чтения, записи, перемещения внутри файла
Каталог или директория — файл, содержащий записи о входящих в него файлах. Каталоги могут содержать записи о других каталогах, образуя древовидную структуру.
Различают также файлы по типу доступа:
файлы последовательного типа доступа;
файлы произвольного доступа;(см. в след. пункте);
