Привет! Давай разбираться.
На картинке вопрос касается правильного способа выделения динамической памяти под переменную типа float в C++.
Нам нужно выбрать один из трех вариантов кода, чтобы правильно выполнить эту операцию.
float *ptr = new float; X = *ptr; --- Это описание создает указатель на float, выделяет память для одного float, и помещает адрес выделенной памяти в указатель ptr. Затем значение, на которое указывает ptr (по умолчанию неопределенное, так как память только что выделена), присваивается переменной X.
float & ptr = new float; X = &ptr; --- этот синтаксис некорректен. Нельзя создать ссылку на значение, возвращаемое операцией new, так как new возвращает указатель.
float * ptr = &X; X = new float; --- здесь создается указатель ptr, который указывает на адрес переменной X, а затем оператором new пытаются присвоить переменной X адрес новой динамической переменной, что неправильно, так как типы несовместимы (X должен быть типа float*, чтобы принять новый адрес).
Исходя из этого, правильный ответ - №1, так как этот вариант корректно выделяет память для одной переменной типа float и инициализирует указатель для доступа к ней.
Выберем 1.
