Информация об изменениях

Сообщение Re[2]: как записать в массив char элемент размерности short от 02.12.2015 20:39

Изменено 02.12.2015 20:41 watchmaker

Здравствуйте, Carc, Вы писали:

C>Может все-так адрес взять элемента массива?

C>(unsigned short*)(& data[2]) = 65535;

Этого мало — нужно ещё и разыменовать:
*(unsigned short*)(&data[2]) = 65535;


А также не забыть, что вся эта конструкция легко может навернуться из-за невыровненной записи. И нужно либо самому следить за этим (где, например, alignas в декларации массива?), либо использовать единственный кросплатформенный в C/C++ способ записи в произвольное место в памяти — функцию memcpy.
Re[2]: как записать в массив char элемент размерности short
Здравствуйте, Carc, Вы писали:

C>Может все-так адрес взять элемента массива?

C>(unsigned short*)(& data[2]) = 65535;

Этого мало — нужно ещё и разыменовать:
*(unsigned short*)(&data[2]) = 65535;


А также не забыть, что вся эта конструкция легко может навернуться из-за невыровненной записи (в зависимости от архитектуры). И нужно либо самому следить за этим (где, например, alignas в декларации массива?), либо использовать единственный кросплатформенный в C/C++ способ записи в произвольное место в памяти — функцию memcpy.