++ - Инкрементация.Увеличить указатель на 1. После увеличения указатель будет указывать на следующий элемент массива. Т.Е. адрес увеличится на размер элемента типа.
Пример вывода элементов одномерного массива с использованием операции инкрементации
Для экономичного управления оперативной памятью существует динамическая стратегия управления – это когда за один сеанс работы программы по ходу выполнения неоднократно выделяется, обрабатывается и если в этом есть необходимость, освобождается оперативная память базового типа.
Формат выделения памяти:
Тип * указатель = new тип; //1 формат
Тип * указатель = new тип (значение); //2 формат
Оператор newвыделяет блок памяти базового типа и возвращает указателю адрес на нулевую ячейку этого блока. Если newне в состоянии найти необходимое пространство свободной памяти, то возвращает адрес NULL (никакой), что определяется значением 0. Тип указателя и тип выделяемой памяти обязательно должны совпадать по базовому типу. Когда, используется второй формат одновременно с выделением необходимой памяти производится инициализация содержимого блока памяти указанным в круглых скобках значением.
Пример использования оператора new
#include <iostream>
using namespace std ;
int main ( )
{
// объявление указателей
int* pi ; unsigned short* pu ;
// выделение памяти
pi = new int ;
pu = new unsigned short ( 200 ) ;
// объявление указателя с выделением памяти
double* pd = new double ;
// объявление указателя с инициализацией
float* pf = new float ( -3.15 ) ;
// вывод адресов, выделенных new
cout << "Pointers" ;
cout << "\npi\t" << pi << "\npu\t" << pu ;
cout << "\npd\t" << pd << "\npf\t" << pf ;
// вывод значений
cout << "\n\nValues with initialization" ;
cout << "\n* pu\t" << * pu ;
cout << "\n* pf\t" << * pf ;
cout << "\n\nValues without initialization" ;
cout << "\n* pi\t" << * pi ;
cout << "\n* pd\t" << * pd << endl ;
// присваивание значений и вывод
* pi = - * pu ; * pd = - * pf ;
cout << "\n\nValues after initialization" ;
cout << "\n* pi\t" << * pi ;
cout << "\n* pd\t" << * pd << endl ;
return 0 ;
}
Чтобы освободить блок динамической памяти, выделенный оператором new,необходимо выполнить операцию динамического освобождения памяти delete.
Формат оператора динамического освобождения памяти: