Запись в память и чтение значений разных типов - C (СИ)
Формулировка задачи:
Здравствуйте.
Есть память, думал можно, а оказалось я в тупике, как покласть в память одно число long long 8 байтовое и штук несколько однобайтовых unsigned charиков?
Делал так:
Листинг программы
- int main(){
- long long a = 1010101
- unsigned char b = 1;
- *unsigned char *mem = malloc(264);
- // И вот тут я офигел
- //В PureBasic мне дико нравилось что есть функции pokel и pokec для
- // укладывания в память по одному указателю разномастных данных, они тупо накладывались на
- // столько байт сколько требовалось, какой способ наипростейший в Си?
- return 0;
- }
Решение задачи: «Запись в память и чтение значений разных типов»
textual
Листинг программы
- unsigned char* p;
- p = mem;
- *((long long*)p) = a;
- p += sizeof(long long);
- *p = b;
- p++;
- *p=b;
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляется указатель
p
на типunsigned char
. p
приводится кmem
.- В
mem
записывается значениеa
по приведенному значению типаlong long
. p
инкрементируется на размер типаlong long
.- В
p
записывается значениеb
. p
инкрементируется на 1.- В
p
записывается значениеb
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д