
- •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
- •Интерфейсы
32. Передача в функции аргументов по умолчанию.
Язык С++ позволяет присваивать параметрам функции значения по умолчанию в том случае, когда при вызове функции не указываются параметры. Значения по умолчанию задаются синтаксически сходным образом с инициализацией переменных. Например, ниже объявляется функция f(), имеющая аргументом целую переменную, значением которой по умолчанию является величина 1: void f (int i = 1) { ... }
Теперь функция f() может вызываться двумя способами, как показано ниже: f(10); // явная передача значения f (); // функция использует значение по умолчанию
В первом случае аргументу i будет присвоено значение 10. Во втором случае i получит значение по умолчанию, равное 1.
Аргументы по умолчанию в языке С++ позволяют программисту писать более простой код. Для того, чтобы охватывать множество ситуаций, часто функция содержит больше параметров, чем это необходимо при ее наиболее типичном использовании. Используя аргументы по умолчанию, можно указать только аргументы, которые отличаются от значений по умолчанию в каждой конкретной ситуации.
В общем случае при вызове функции ее аргументы совмещаются с соответствующими параметрами слева направо. После того, как всем использованным при вызове функции аргументам поставлены в соответствие параметры, оставшимся аргументам присваиваются их значения по умолчанию.
При создании функции, имеющей аргументы по умолчанию, их значения должны быть указаны только один раз, причем в тот самый момент, когда функция первый раз объявляется в файле.
Хотя аргументы по умолчанию не могут быть переопределены, при перегрузке функции каждая ее версия может включать в себя новые значения аргументов по умолчанию.
При определении параметров важно понимать, что все параметры по умолчанию располагаются правее параметров, которые не имеют значений по умолчанию. Это означает, что после того, как определен параметр, имеющий значение по умолчанию, нельзя ввести в интерфейсе функции параметр, не имеющий значения по умолчанию.
После того как начались параметры по умолчанию, в списке не могут появиться параметры, не имеющие значения по умолчанию.
33. Шаблоны функций. Особенности и использования.
Шаблоны функции определяют типонезависимую функцию, т. е. она работает с типами, которые в процессе копмилляции подставляются вместо формальных. Можно провести аналогию формальными и фактическими параметрами функций: мы описываем какие-то переменные определённого типа, а получаем те фактические параметры, которые подаём на их место. Так же и здесь: мы объявляем формальный тип, а потом "кидаем" его в функцию. Это можно сделать указав после имени функции список типов в угловых скобках. Для примера рассмотрим функцию, которая вычисляет минимум из двух чисел:
template<class T> // или template<typename T>
T min (T a, T b)
{ // не используя тернарный оператор:
return a < b ? a : b; // if(a < b) return a;
} // else return b;
Вызвать её из программы можем для разных типов, например:
float a = min<float>(b, c);
char ch = min<char>('#', 't');
Шаблоны могут использовать и несколько типов. В общем виде можно описать так:
template<typename <имя типа>[, typename <имя типа>]>
[возвращаемый тип(в том числе и из описаных)] имя функции([список формальных параметров, среди которых могут быть парметры описанных типов])
{
// тело функции
}
Основные концепции:
Шаблоны функций позволяют вам объявлять типонезависимые, или общие, функции.
Когда программе требуется использовать функцию с определенными типами данных, она должна указать прототип функции, который определяет требуемые типы.
Когда компилятор C++ встретит такой прототип функции, он создаст операторы, соответствующие этой функции, подставляя требуемые типы.
Программы должны создавать шаблоны для общих функций, которые работают с отличающимися типами. Другими словами, если вы используете с какой-либо функцией только один тип, нет необходимости применять шаблон.
Если функция требует несколько типов, шаблон просто назначает каждому типу уникальный идентификатор, например Т, T1 и Т2. Позже в процессе компиляции компилятор C++ корректно назначит типы, указанные вами в прототипе функции.
Структурное программирование