#include <stdlib.h>
#include <stdint.h>
#include <string.h>
int main() {
// Buffer.
unsigned char buffer[sizeof(int) + sizeof(int) + sizeof(float)];
// Buffer pointer (first object).
unsigned char *buf_ptr = buffer;
// Variables ressources.
int a = 65500;
int b = 32000;
float c = 3.14;
// Variables pointers.
int *aa = NULL;
int *bb = NULL;
float *cc = NULL;
/* Copy variables to buffer. */
uint16_t cur = 0;
memcpy(buf_ptr
+ cur
, &a
, sizeof(int)); cur += sizeof(int);
memcpy(buf_ptr
+ cur
, &b
, sizeof(int)); cur += sizeof(int);
memcpy(buf_ptr
+ cur
, &c
, sizeof(float)); cur += sizeof(float);
/* Set pointers. */
cur = 0;
aa = (int*)(buf_ptr + cur);
cur += sizeof(int);
bb = (int*)(buf_ptr + cur);
cur += sizeof(int);
cc = (float*)(buf_ptr + cur);
cur += sizeof(float);
// Print values.
printf("%i %i %f\n", *aa
, *bb
, *cc
);
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCmludCBtYWluKCkgewoKICAgIC8vIEJ1ZmZlci4KICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW3NpemVvZihpbnQpICsgc2l6ZW9mKGludCkgKyBzaXplb2YoZmxvYXQpXTsKCiAgICAvLyBCdWZmZXIgcG9pbnRlciAoZmlyc3Qgb2JqZWN0KS4KICAgIHVuc2lnbmVkIGNoYXIgKmJ1Zl9wdHIgPSBidWZmZXI7CgogICAgLy8gVmFyaWFibGVzIHJlc3NvdXJjZXMuCiAgICBpbnQgYSA9IDY1NTAwOwogICAgaW50IGIgPSAzMjAwMDsKICAgIGZsb2F0IGMgPSAzLjE0OwoKICAgIC8vIFZhcmlhYmxlcyBwb2ludGVycy4KICAgIGludCAqYWEgPSBOVUxMOwogICAgaW50ICpiYiA9IE5VTEw7CiAgICBmbG9hdCAqY2MgPSBOVUxMOwoKICAgIC8qIENvcHkgdmFyaWFibGVzIHRvIGJ1ZmZlci4gKi8KICAgIHVpbnQxNl90IGN1ciA9IDA7CiAgICBtZW1jcHkoYnVmX3B0ciArIGN1ciwgJmEsIHNpemVvZihpbnQpKTsKICAgIGN1ciArPSBzaXplb2YoaW50KTsKICAgIG1lbWNweShidWZfcHRyICsgY3VyLCAmYiwgc2l6ZW9mKGludCkpOwogICAgY3VyICs9IHNpemVvZihpbnQpOwogICAgbWVtY3B5KGJ1Zl9wdHIgKyBjdXIsICZjLCBzaXplb2YoZmxvYXQpKTsKICAgIGN1ciArPSBzaXplb2YoZmxvYXQpOwoKICAgIC8qIFNldCBwb2ludGVycy4gKi8KICAgIGN1ciA9IDA7CiAgICBhYSA9IChpbnQqKShidWZfcHRyICsgY3VyKTsKICAgIGN1ciArPSBzaXplb2YoaW50KTsKICAgIGJiID0gKGludCopKGJ1Zl9wdHIgKyBjdXIpOwogICAgY3VyICs9IHNpemVvZihpbnQpOyAgICAKICAgIGNjID0gKGZsb2F0KikoYnVmX3B0ciArIGN1cik7CiAgICBjdXIgKz0gc2l6ZW9mKGZsb2F0KTsKCiAgICAvLyBQcmludCB2YWx1ZXMuCiAgICBwcmludGYoIiVpICVpICVmXG4iLCAqYWEsICpiYiwgKmNjKTsKCiAgICByZXR1cm4gMDsKfQ==