593.08K
Category: programmingprogramming

Программирование и использование указателей. Динамическое распределение памяти

1.

ПРОГРАММИРОВАНИЕ И
ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ.
ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ
ПАМЯТИ
ВЫПОЛНИЛ СТУДЕНТ ГРУППЫ CS-202
СИНЧЕНКО ЯРОСЛАВ

2.

УКАЗАТЕЛИ
Указатели — это объекты, значениями которых являются адреса других объектов
(переменных, констант, указателей) или функций. Как и ссылки, указатели
используются для косвенного доступа к объекту.
• ДЛЯ ОПРЕДЕЛЕНИЯ УКАЗАТЕЛЯ НАДО УКАЗАТЬ ТИП ОБЪЕКТА, НА КОТОРЫЙ
УКАЗЫВАЕТ УКАЗАТЕЛЬ, И СИМВОЛ ЗВЕЗДОЧКИ *.
2

3.

ПРИМЕР УКАЗАТЕЛЯ
• INT *P;
• {
• INT X = 10; // ОПРЕДЕЛЯЕМ ПЕРЕМЕННУЮ
• INT *P;
// ОПРЕДЕЛЯЕМ УКАЗАТЕЛЬ
• P = &X;
// УКАЗАТЕЛЬ ПОЛУЧАЕТ АДРЕС ПЕРЕМЕННОЙ
• COUT <<“P = ”<<P<<ENDL;
• RETURN 0;
• }
3

4.

Поскольку указатель хранит адрес, мы можем получить значение, хранящееся в этом
адресе, то есть значение переменной x. Для этого используйте операцию * или операцию
разыменования, используемую при определении указателя. Результатом этой операции
всегда является объект, на который указывает указатель. Используйте эту операцию,
чтобы получить значение переменной x:
• {
• INT X = 10; // ОПРЕДЕЛЯЕМ ПЕРЕМЕННУЮ
• INT *P;
// ОПРЕДЕЛЯЕМ УКАЗАТЕЛЬ
• P = &X;
// УКАЗАТЕЛЬ ПОЛУЧАЕТ АДРЕС ПЕРЕМЕННОЙ
• COUT <<“ADRESS = ”<<P<<ENDL; // 0X60FE98
• COUT <<“VALUE = “<<*P<<ENDL; // 10
• RETURN 0;
• }
4

5.

ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ
Динамическое выделение памяти часто используется для экономии
вычислительных ресурсов. Ставшие ненужными переменные или
объекты уничтожаются, а свободное место используется для новых
переменных или объектов.
• С++ ИСПОЛЬЗУЕТ НОВЫЕ МЕТОДЫ РАБОТЫ С ДИНАМИЧЕСКОЙ
ПАМЯТЬЮ ПРИ ПОМОЩИ ОПЕРАТОРОВ NEW И DELETE:
• NEW — ДЛЯ ВЫДЕЛЕНИЯ ПАМЯТИ;
• DELETE — ДЛЯ ОСВОБОЖДЕНИЯ ПАМЯТИ.
5

6.

ОПЕРАТОР NEW ИСПОЛЬЗУЕТСЯ В СЛЕДУЮЩИХ
ФОРМАХ:
• NEW ТИП; — ДЛЯ ПЕРЕМЕННЫХ
• NEW ТИП[РАЗМЕР]; — ДЛЯ МАССИВОВ
ПАМЯТЬ, ОТВЕДЕННАЯ В РЕЗУЛЬТАТЕ ВЫПОЛНЕНИЯ NEW, БУДЕТ СЧИТАТЬСЯ РАСПРЕДЕЛЕННОЙ
ДО ТЕХ ПОР, ПОКА НЕ БУДЕТ ВЫПОЛНЕНА ОПЕРАЦИЯ DELETE.
ОСВОБОЖДЕНИЕ ПАМЯТИ СВЯЗАНО С ТЕМ, КАК ВЫДЕЛЯЛАСЬ ПАМЯТЬ – ДЛЯ ОДНОГО
ЭЛЕМЕНТА ИЛИ ДЛЯ НЕСКОЛЬКИХ. В СООТВЕТСТВИИ С ЭТИМ СУЩЕСТВУЕТ И ДВЕ ФОРМЫ
ПРИМЕНЕНИЯ DELETE:
• DELETE УКАЗАТЕЛЬ; — ДЛЯ ОДНОГО ЭЛЕМЕНТА
• DELETE[] УКАЗАТЕЛЬ; — ДЛЯ МАССИВОВ
6

7.

ПРИМЕР
INT SIZE;
INT *DAN;
SYSTEM("CHCP 1251");
SYSTEM("CLS");
COUT << "ВВЕСТИ РАЗМЕРНОСТЬ МАССИВА : ";
CIN >> SIZE;
DAN = NEW INT[SIZE];
FOR (INT I = 0; I<SIZE; I++) {
COUT << "DAN[" << I << "] = ";
CIN >> DAN[I];
}
FOR (INT I = 0; I<SIZE; I++)
COUT << DAN[I] << " ";
DELETE[] DAN;
CIN.GET(); CIN.GET();
RETURN 0;
7

8.

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА :
• HTTPS://METANIT.COM/CPP/TUTORIAL/4.1.PHP
• HTTPS://PROG-CPP.RU/CPP-NEWDELETE/
8
English     Русский Rules