Страница 1 из 1
указатель
Добавлено: 11 мар 2024, 00:46
ya
Указатель - это особый вид переменной, который хранит адрес другой переменной того же типа
Код: Выделить всё
int int_var{43};
int *p_int{&int_var}; // инициализация указателя другой переменной
std::cout << *p_int << std::endl; // выведет значение указателя
Выделяет память для указателя ключевым словом new, высвобождает память словом delete
Код: Выделить всё
int *p_num4{nullptr};
p_num4 = new int(23);
...
delete p_num4; // высвобождает память
p_num4 = nullptr; // сброс данных в памяти
нельзя использовать delete дважды на один и тот же указатель
Безопасное использование нулевых указателей
Добавлено: 11 мар 2024, 13:49
ya
Безопасное использование нулевых указателей
Код: Выделить всё
int *p_number{}; // Инициализация указателя на неявный адрес в памяти
p_number = new int(7);
if(!(p_number==nullptr))
{
std::cout << "Указатель p_number ссылается на правильный адрес в памяти : "<< p_number << std::endl;
std::cout << "Указатель *p_number имеет значение : "<< *p_number << std::endl;
}else
{
std::cout << "Указатель p_number ссылается на недопустимый адрес в памяти : "<< std::endl;
}
delete p_number;
nullptr;
Можно вызвать delete, предварительно проверив существование указателя на адрес в памяти
Код: Выделить всё
int *p_number1{};
delete p_number1;
if(p_number1)
{
delete p_number1'
p_number1 = nullptr;
}
Re: указатель
Добавлено: 26 июл 2024, 17:31
ya
имяТипа * имя указателя = new имяТипа ;
инициализация указателя типом int в свободной области памяти за счёт конструкции new int :
высвобождение памяти в куче, ранее инициализированной конструкцией new
Код: Выделить всё
delete ps ;// по завершении освободить память
Инициализация указателя на адрес переменной:
Переменные nights и pd хранят свои значения в области памяти под названием стек, тогда как память, выделяемая операцией new , находится в области, называемой кучей или свободным хранилищем
Код: Выделить всё
// use_new.срр - - использо вание операции new
#include < iostream>
int main ( )
{
usiпg пamespace std ;
int nights = 1001 ;
int * pt = new int ; // выделение пространства для
int *pt = 1001 ; // сохранение в нем значения
cout << " пights value = " ; // значение nights
cout << nights << " : location " << & nights << endl ; // расположение nights
cout << " int " ; // значение и расположение int
cout << "value = " < < *pt << " : location = " << pt < < endl ;
douЫe * pd = new double ; / / выделение пространства для douЫe
*pd = 10000001.0 ; // сохранение в нем значения double
}
Re: указатель
Добавлено: 26 июл 2024, 18:04
ya
Создание динамического массива с помощью операции new
Код: Выделить всё
int * psome = new int [ 10 ] ; // получение блока памяти из 10 элементов типа int
Операция new возвращает адрес первого элемента в блоке. В данном примере это значение присваивается указателю psome
Код: Выделить всё
delete [ ] psome ; // освобождение динамического массива
Присутствие квадратных скобок сообщает программе , что она должна освободить весь массив, а не только один элемент, на который указывает указатель.
Общая форма выделения и назначения памяти для массива выглядит следующим образом:
имя_ типа имя_указателя = new имя_типа [ количество_ элементов ] ;
Re: указатель
Добавлено: 21 июн 2025, 20:39
ya