лекции программирование / polevoy_cpp_2012_spring_lecture_03
.pdfОбъектно-ориентированное программирование
с использованием C++
Полевой Дмитрий Валерьевич к.т.н., доцент КИК
e-mail: oop.misis@gmail.com
Подстановка значений
•“ волшебные числа”
•вычисления на этапе компиляции
•подстановка значений (без выделения
памяти)
#define MAX_PATH 256
или
const int MAX_PATH(256);
25.02.2012 |
cppNewb.ru |
2 |
Константность (const)
•замена препроцессора
•строгий контроль типов
•защита данных
•оптимизация
25.02.2012 |
cppNewb.ru |
3 |
Константность и защита данных
•инициализация в процессе выполнения
•изменение не предусмотрено
•компилятор пресекает попытки
потенциального изменения (проверка присваиваний)
25.02.2012 |
cppNewb.ru |
4 |
Указатель (pointer)
•тип Т* - тип “указатель на Т”
•переменная типа Т* содержит адрес объекта типа Т
•разыменование (косвенное обращение)
пример:
char с1 = ‘а’;
char* p = &с1; //< адрес переменной с1 char с2 = *p; //< с2 == ‘а’
25.02.2012 |
cppNewb.ru |
5 |
Ноль
•ноль (0) имеет тип int
•константа
–арифметический тип
–указатель
•NULL
–использовать запрещено
–макрос
25.02.2012 |
cppNewb.ru |
6 |
Нулевой указатель
•гарантируется отсутствие объектов с адресом 0
•0 – указатель, который ни на что не ссылается
•разыменование нулевого указателя – ошибка времени исполнения
25.02.2012 |
cppNewb.ru |
7 |
Массив (встроенный)
•составной пользовательский тип
•тип T[size] – тип “массив из size элементов типа Т”
•элементы индексируются от 0 до size-1
•в памяти расположены подряд
пример:
int divisors[12]; //! не инициализирован
25.02.2012 |
cppNewb.ru |
8 |
Инициализация встроенного массива
•списком инициализаторов
•размер массива м.б. вычислен по списку инициализации
•не указанные в списке значения инициализируются по умолчанию
•используйте T arr[SIZE] = {0};
пример:
int ar1[] = {l, 2, 3, 4};
int ar2[32] = {l, 2};
int ar3[MAX_NUMS] = {0};
25.02.2012 |
cppNewb.ru |
9 |
Указатели и массивы
•имя массива – указатель на первый элемент
•доступ через указатели или оператор []
пример:
p = &v[0]; //< или p = v;
v[i] == *(p + i)
25.02.2012 |
cppNewb.ru |
10 |