#cpp #указатели
что означает это строка кода *(*(p = new double*) = new double) = 2;
Ответы
Ответ 1
*(*(p = new double*) = new double) = 2; Начнем с внутренней скобки p = new double* В переменную p записывается адрес памяти, выделенной для указателя double*, и само выражение имеет значение этого указателя. *(p = new double*) = new double Здесь оно разыменовывается и по адресу, который хранится в p, записывается значение указателя, выделенного под переменную double, каковое значение - указателя на double - и возвращается, а затем разыменовывается и в него уже записывается значение 2... Т.е. картинка выглядит примерно так:Ответ 2
Если расписать элементарные действия по отдельности, то получится p = new double *; *p = new double; **p = 2; У вас все то же самое "свёрнуто" в одно выражение. Разумеется, все это имеет смысл только если переменная p объявлена заранее и объявлена с правильным типом.
Комментариев нет:
Отправить комментарий