Взаимосвязанность указателя с тем же адресомC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Взаимосвязанность указателя с тем же адресом

Сообщение Anonymous »

Рабочий черновик стандартного N4659 говорит: < /p>


[basic.compound]

Если два объекта являются указательными интернируемыми, тогда они имеют одинаковый адрес < /p>
< /blockquote>

, а затем отмечает, что < /p>


Объект массива и его первый элемент не являются pointer-interconbelible, даже если они имеют одинаковый адрес < /p>
< /blockquote>

Каково обоснование создания объекта массива и его первого элемента, не указанного в перемещении? В более общем плане, каково обоснование для отличия понятия о том, что увлеченная конвертичность от понятия наличия одного и того же адреса? Там разве там нет противоречия?

Код: Выделить всё

int a[10];

void* p1 = static_cast(&a[0]);
void* p2 = static_cast(&a);

int* i1 = static_cast(p1);
int* i2 = static_cast(p2);
У нас есть P1 == P2 , однако, i1 хорошо определен, и использование i2 приведет к UB.

Подробнее здесь: https://stackoverflow.com/questions/479 ... me-address
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»