So I started a programming project, and I found out it would make everything easier if I could just make a pointer without declaring it as `char*`, `int*` and so on and just specify the size somewhere else. I searched around but couldn't find anything useful. 

Right now my idea would be to make everything a `char*` and just unite them with bit shifting and or operations if it isn't a string. If this is too low level for C, what language lets me do this, I prefer not to use assembly because it isn't cross platform enough.

**edit:**
So i forget to mention it should allocate memory at runtime, and to not waste too much memory i want to allocate memory depending on the size.
For example i want to allocate 1 byte for char sized values and 2 bytes for int sized values and so on. The size is predefined in a file, but is not known until the file is read which should be read in runtime rather then compiling time.