- •Алгоритмы поиска
- •Последовательный поиск
- •Бинарный поиск
- •Инструкции
- •Предпроцессор. Заголовочные файлы. Директивы предпроцессора
- •Указатели
- •В иды указателей
- •Арифметика указателей
- •Указатель типа void*
- •Указатель на указатель
- •Указатель и ключевые слова const, volatile
- •Массивы
- •Примеры объявления массива
- •Инициализация массива
- •Неявная инициализация
- •Явная инициализация массива
- •Массивы и оператор sizeof
- •Трехмерные массивы
- •Связь массивов и указателей
- •Трехмерные массивы
- •Массивы указателей
- •Динамическое распределение памяти
- •Оператор new и массивы
- •Функции
- •Объявление (прототип) функции
- •Объявление inline-функции.
- •Определение
- •Вызов функции
- •Вызов inline – функции
- •2 Способ:
- •3 Пример:
- •Параметры значения
- •Параметры функции main
- •В озвращаемые значения
- •Ключевое слово const и функция
- •«Перегрузка» имен функции
- •Рекурсивные функции
- •Структуры c
Оператор new и массивы
запрещается использовать оператор new для создания массивов, размер которых известен на этапе компиляции. Выделение динамической памяти для массивов следует выделять при:
в случае если все или некоторые размерности массива определяются только во время выполнения программы
размерности массива могут изменяться в процессе выполнения программы.
Ссылки
В языке C такого понятия как ссылка нет. Для хранения адреса используется указатель. В C++ ссылка используется для косвенного обращения к переменной
К освенное обращение
Указатель(pointer) переменная, которая явно содержит адрес объекта |
Ссылка (reference) Переменная, содержащая адрес объекта синтаксически, но ей пользуются так же как и самим объектом |
|
Указатель |
Ссылка |
объявление |
int x; |
|
int *p=&x; |
int &r=x; |
|
инициализация |
int *p |
int&r;//ссылка должна быть инициализирована extern int &r; |
получение значения |
int tmp = *p; //получение значения переменной x (*p)++; //увеличение значения x на 1 |
int tmp = r; //получения значения переменной x r++; |
модификация адреса |
p++; |
int y; r=y; |
нулевое значение |
p=0; |
На ноль указывать нельзя, ссылка должна всегда указывать. |
Применение оператора «&» |
int **p=&p;
|
int *p=&r;
|
Ссылка на указатель |
int *&refp=p; int *&refx=&x;//так делать нельзя, изменяется указатель |
Ссылку делать нельзя |
Ключевое слово void |
void*p=0 |
нельзя |
Оператор sizeof |
double *p; size_t n=sizeof(p);//4 |
double d; double &rd=d; size_t n=sizeof(rd)//8 |
Инициализация литералом (константная ссылка) |
int*p=reinterpret_cast<int*>(0x10000000); // int &r=1; нельзя! const int &r=1; //ок |
|
Функции
Ф
Последовательность
команд
Использование функций позволяет:
Не писать многократно один и тот же код, который выполняет одни и те же действия с разными наборами данных
Использовать посредством функций «чужой код» (стандартные библиотеки)
Улучшить структуру программы
Справиться со сложностью восприятия больших программ, а при разработке больших проектов или библиотек позволяет группе разработчиков координировать свои части разработки.