Здравствуйте, Carc, Вы писали:
C>Может все-так адрес взять элемента массива?
C>(unsigned short*)(& data[2]) = 65535;
Этого мало — нужно ещё и разыменовать:
*(unsigned short*)(&data[2]) = 65535;
А также не забыть, что вся эта конструкция легко может навернуться из-за невыровненной записи (в зависимости от архитектуры). И нужно либо самому следить за этим (где, например, alignas в декларации массива?), либо использовать единственный кросплатформенный в C/C++ способ записи в произвольное место в памяти — функцию memcpy.