@ Олив: Нет, я не говорил, что это неопределенное поведение. Это адрес члена массива, а арифметические правила указателя позволяют добавлять любое смещение, попадающее в тот же массив. Что определяет ваш пример.

те рассмотрим этот код:

int i;
int is[10]{};

unsigned char * p = reinterpret_cast<unsigned char*>(&i);
//p defined to point to the object-representation of the first element of array ints
unsigned char * ps = reinterpret_cast<unsigned char*>(&is[0]);

p += sizeof(int);
ps += sizeof(int);
//now ps points to the end of ints[0] and p point to the end of i;

p += sizeof(int); //Undefined behavior according to [expr.add]

ps += sizeof(int); //Undefined behavior?
unsigned char c = *ps;//Undefined behavior?

Если мы посмотрим, чтоps указывает наобъект-представление изis[0] затем в соответствии с арифметическим правилом указателя поведение не определено в двух последних строках кода.

Тем не менее, еслиps также указатель наобъект-представление массива intis поведение определено.

Итак, мой вопрос: указатель наобъект-представление изsuboject также указатель на элементобъект-представление содержащего завершенного объекта?

Ответы на вопрос(2)

Ваш ответ на вопрос