что означает это строка кода *(*(p = new double*) = new double) = 2;
*(*(p = new double*) = new double) = 2;
Начнем с внутренней скобки
p = new double*
В переменную p
записывается адрес памяти, выделенной для указателя double*
, и само выражение имеет значение этого указателя.
*(p = new double*) = new double
Здесь оно разыменовывается и по адресу, который хранится в p
, записывается значение указателя, выделенного под переменную double
, каковое значение - указателя на double
- и возвращается, а затем разыменовывается и в него уже записывается значение 2...
Т.е. картинка выглядит примерно так:
Если расписать элементарные действия по отдельности, то получится
p = new double *;
*p = new double;
**p = 2;
У вас все то же самое "свёрнуто" в одно выражение.
Разумеется, все это имеет смысл только если переменная p
объявлена заранее и объявлена с правильным типом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
А нет ли в Windows ничего такого, похожего на сигналы в POSIX?
Установил wxWidget, решил запустить пример в CMakeВсё настроил, всё подключил
Пишу простенькую игру на sfmlНе буду вдаваться в подробности - опишу кратко, как все реализовано