you may cast the memory block to a data struct, as a pointer,
struct someStruct* data = (struct someStruct*)memAddress;
then you can access the data as a pointer
somefuction (data->var1, data->var2);
or
sum = data->var1 + data->var2;
you will have to be carful, and sure that the mapping struct matches the memory block, or you gonna get some junk
something like this
struct msgStructureCommon { unsigned int messageID; unsigned int messageSize; char bufferLimit[1024-(2*sizeof(unsigned int))]; };
struct msgStructureID911 { unsigned int messageID; unsigned int messageSize; //someData.... }; struct msgStructureID2013 { unsigned int messageID; unsigned int messageSize; //someData.... };
// in main
char* buffer = receiveData(socket); struct msgStructureCommon* msgRCV = (struct msgStructureCommon*)buffer; std::cout<< msgRCV->messageID << std::endl; if(msgRCV->messageID == 911) { struct msgStructureID911* msg911 = (struct msgStructureID911*)buffer; if(msg911->messageSize >= MSG_LIMIT_SIZE_911) { std::cout<< msg911->someData<< std::endl; } else { std::cout<< "ops, message is not correct!" << std::endl; } } else if (msgRCV->messageID == 2013) { //... }