Защита от взлома Лекция 10Защита от взлома Лекция 10.

Презентация:



Advertisements
Похожие презентации
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Advertisements

Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Лекция 3 Ветвления. Инструкции и выражения Выражение становится инструкцией, если в конце его поставить точку с запятой. Выражения: a = b + c, i++, printf(...),
Часть 1: «Основы программирования». Содержание Основные понятия. Структура программы. Ввод-вывод Программирование циклов. Операторы цикла while, for и.
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
1. a=? b=? c=? {int a, b, c; a=(b=2+3)/2 - 4+(c=5%2); printf("%d %d %d \n", a, b, c); }
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Лекция 10 Структуры. Классификация типов данных Простые Целые, вещественные, void, перечисления Являются атомарными не состоят из других типов Адресные.
Итерация по покрытиям. Нацеленная итерация Одно обобщённое воздействие на каждый элемент некоторого покрытия. Элементы покрытия перебираются по порядку.
C++ - занятие 2 1. Какие типы вы бы использовали? height // рост salary // зарплата за месяц (в рублях) grade// средний балл charshort longint unsigned.
Язык C++ Лекция 2. Недостатки enumов Засорение namespaceа, в котором находится enum Соответственно, члены enumа должны иметь уникальный префикс.
Массивы и строки Лекция 5. Одномерные массивы. Объявление. Общая форма объявления: тип имя_переменной[размер]; Пример: double balance[100]; balance[3]
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Лекция 22. Шаблоны (часть 2) Красс Александр СПбГУ ИТМО, 2008.
Полиморфизм Полиморфизм (polymorphism) - последний из трех "китов", на которых держится объектно-ориентированное программирование Слово это можно перевести.
Лекция 3 Массивы и Функции.. Массивы Массив – набор данных, связанных одним именем, расположенных последовательно в памяти. Каждому элементу массива присвоен.
Объектно-ориентированное программирование С++. Лекция 8 Карпов В.Э.
Транксрипт:

Защита от взлома Лекция 10

Обычный вызов функций void f1(void) {…}; // f1() void f2(void) {…}; // f2() void f3(void) {…}; // f3() void main() { f1(); // Вызов f1 f2(); // Вызов f2 f3(); // Вызов f3 };

Дерево вызовов функций

Динамическое ветвление typedef void (*fun)(void); // указатель на функцию void f1(void) {…}; // f1() void f2(void) {…}; // f2() void f3(void) {…}; // f3() Fun table[3] = {f1,f2,f3}; void main() { for (int i=0;i

Использование переменной-флага int flag; // Глобальная переменная void f1(void) {… return 3 }; // f1() void f2(void) {… return 2 }; // f2() void f3(void) {… return 4 }; // f3() void main(){ flag = 1; while (flag!=4) switch (flag) { case 1: flag = f1(); break; case 2: flag = f2(); break; case 3: flag = f3(); break; } };