Содержание
- 2. Операторы Выражение Условный Выбора Циклы Передачи управления В конце оператора всегда ставится ;
- 3. Инструкции и блоки Выражение (например, x = 0) становится инструкцией, если в конце поставить точку с
- 4. Блоки и область видимости Переменные видимы внутри того блока, где она объявлена При покидании своего блока
- 5. Условный оператор if (выражение) опер.1; [else опер.2;] Пример. Найти максимум и минимум из двух чисел. int
- 6. Конструкция else-if Позволяет осуществлять многоступенчатое решение if (выражение) инструкция else if (выражение) инструкция else if (выражение)
- 7. Пример, бинарный поиск /* binsearch: найти x в v[0] int binsearch(int x, const int v[], int
- 8. Условный оператор. Типичные ошибки Отсутствие фигурных скобок if (a Использование = вместо == if (a=5) cout
- 9. Оператор выбора switch (выражение) { case конст.1: список операторов 1 case конст.2: список операторов 2 …
- 10. Пример на оператор выбора По номеру месяца определить время года … switch (m) { case 1:
- 11. #include #include #include enum class WeekDay { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; std::string
- 12. Что такое циклическое выполнение Цикл – последовательность из нескольких операторов, указываемая в программе один раз, которая
- 13. Виды циклов Циклическое выполнение в языке Си осуществляется при использовании следующих операторов цикла: while for do..while
- 14. Цикл с предусловием while (выражение) инструкция Цикл выполняется так: Вычисляется выражение Если оно истинно (не 0)
- 15. Цикл с постусловием do оператор while (выражение) Цикл выполняется так: Выполняется оператор Вычисляется выражение Если оно
- 16. Цикл с параметром for (инициализация; условие выполнения; модификация) оператор; Инициализация выполняется перед началом цикла Выполнение оператора
- 17. Range-based for Версия цикла for, предназначенная для перебора элементов некоторого диапазона Массивы, строки, контейнеры стандартной библиотеки,
- 18. Вложенные циклы Один цикл может быть вложен в другой При этом выполнение внутреннего цикла выполняется как
- 19. Операторы передачи управления goto метка; переход на заданную метку внутри текущей функции - использование инструкции goto
- 20. Указатели
- 21. Хранение данных В C++ есть три разных способа выделения памяти для объектов Статическое: пространство для объектов
- 22. Организация памяти в языке C++ С точки зрения языка С++ память представляет собой массив последовательно пронумерованных
- 23. Пример int i = 1000; char a = 15;
- 24. Что такое указатель? Указатель – это переменная, которая может хранить адрес другой переменной в памяти заданного
- 25. Объявление указателя Указатель на переменную определенного типа объявляется следующим образом: * ; Например: int *pointerToInt; Указатель,
- 26. Константные указатели Как и к обычным переменным, к указателям можно применять модификатор const: const int *
- 27. Получение адреса переменной Для взятия адреса переменной в памяти служит унарный оператор & Этот оператор возвращает
- 28. Оператор косвенного доступа Для доступа к значению, на которое ссылается указатель, необходимо его разыменование (dereferencing), осуществляемое
- 29. Пример p c char c = ‘A’; char *p = &c; *p = ‘B’; ‘A’ ‘B’
- 30. Инициализация указателей с помощью операции & (адрес) int a=5; int * p = &a; значением другого
- 31. Инициализация указателей(2) Значение неинициализированного указателя не определено Разыменование такого указателя приводит к неопределенному поведению Лучше присвоить
- 32. #include void Print(void * p) { std::cout } void Print(int i) { std::cout } void Print(bool
- 33. Копирование указателей Как и в случае обычных переменных, значение одного указателя может быть присвоено другому при
- 34. Динамические переменные Создание int *n = new int; int *m = new int (10); // *m=10
- 35. Адресная арифметика Если p – указатель на некоторый элемент массива, то p+1 – указатель на следующий
- 36. Адресная арифметика в действии a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] p p+1 p-1 q
- 37. Примеры int arr[10]; // получаем указатель на начальный элемент массива int *p = arr; // эквивалентно
- 38. Указатели на char Строковые константы – массивы символов с завершающим нулем Передача строковой константы в функцию
- 39. Особенности Присваивание символьных указателей, не копирует строки char * p = “Hello”; char * p1 =
- 40. Указатели на указатели В C и C++ возможны указатели, ссылающиеся на другие указатели char arr[] =
- 41. Инкремент и декремент указателя Когда указатель ссылается на определенный элемент массива, имеют смысл операции инкремента и
- 42. Указатели и динамическая память Часто возможны ситуации, когда размер и количество блоков памяти, необходимых программе, не
- 43. Операторы new и delete В состав языка C++ вошли операторы new и delete, осуществляющие работу с
- 44. Прочие средства работы с динамической памятью В стандартной библиотеке языка C для работы с динамической памятью
- 45. Функции memcpy, memset и memmove Функция memcpy() осуществляет копирование блока памяти из одного адреса в другой
- 46. Пример int n = 30; // выделяем память под n элементов типа int int * arr
- 47. Указатели на структуры и объединения Указатели на структуры объявляются аналогично указателям на другие типы Для доступа
- 48. Правила корректной работы с динамической памятью Объекты, выделенные при помощи оператора new должны быть удалены при
- 49. Проблемы ручного управления памятью «Висячие ссылки» (dangling pointer) После удаления объекта все указатели на него становятся
- 50. Проблемы ручного управления памятью (продолжение) Утечка памяти (Memory Leak) Причины: Программист не удалил объект после завершения
- 51. Примеры некорректной работы с динамической памятью int main(int argc, char* argv[]) { int * pIntArray =
- 52. Еще примеры некорректной работы с динамической памятью int main(int argc, char* argv[]) { int * someInt
- 53. Ссылки
- 54. Ссылки Ссылку можно рассматривать как еще одно имя объекта Синтаксис & означает ссылку на Применение Задание
- 55. Ссылки в качестве параметров функций Функция принимает не копию аргумента, а ссылку на него При сложных
- 56. Константные ссылки в качестве параметров функций Параметр, переданный в функцию по константной ссылке, доступен внутри нее
- 57. Пример 1 #include void Swap(int & a, int & b) { int tmp = a; a
- 58. Пример 2 struct Point { int x, y; }; void Print(Point const& pnt) { printf("(x:%d, y:%d)\n",
- 59. Инициализация ссылки Ссылка должна быть обязательно проинициализирована Должен существовать объект на который она ссылается Синтаксис Тип
- 60. Пример #include int main() { int i = 1; int j = 3; // инициализация ссылки
- 61. Ссылки на временные объекты При инициализации ссылки объектом другого типа компилятор создает временный объект нужного типа
- 62. Пример 1 int a = 1; int & refA = a; // ссылка на a printf("a
- 64. Скачать презентацию