I don't really understand what you are asking here: do you mean you want to take a known group of variables (where known means: you always know in advance that they will be in a given number and that their types are always the same, so you always get the same pattern int/float/float/float) and turn it into a void pointer? (If not, just skip to the next paragraph.) The best way to go would likely be to create a structure containing those variables, create a pointer to the struct and convert it to a void pointer. When you need to disassemble, you just have to reconvert the void pointer to a struct pointer and then access the members.
If you mean you want to take an arbitrary group of variables (where arbitrary means all the opposite of the known group above), your question turns into something like "how to create an array of multiple types", and things are a bit more complicated.
Ideally, you could point to (almost) any position in memory using a void pointer. Thus, you could store the variables you need to "pack" inside an array of raw bytes (a char array should do the trick). However, this prevents you from unpacking them if you don't know what the variables and their types were before packing. So you should prefix the array with a variable containing the sequence of the types of the variables contained in the array. The easiest way to do this would probably be to add a char* at the beginning of the array containing a string sequence of the types. Your array would be something like:
- {l Code}: {l Select All Code}
0 4 8 12 16
[ "ifff" ],[int],[float],[float],[float]
where I described the sequence int,float,float,float with the string "ifff" (i obviously means int and f stands for float).
Now I won't go into the detail of how to practically pack and unpack data, but this should have given you a basic idea of how to do it. There are obviously other ways to go, maybe also something easier than this.
Hope this helps