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