struct mystruct{
    int* x;
    float *y;
    string *z;
    mystruct(int* a,float* b, string *c): x(a), y(b), z(c){}
};
void* create(){
    int a = 1;
    float b = 2.2;
    string c = "aaa";
    mystruct x(&a, &b, &c);
    void* p = &x;
    return p;
}
void print(void *p){
    mystruct* p1 = static_cast<mystruct*>(p);
    cout << *p1->x  << " " << *p1->y << " "<<*p1->z<< endl;
}
int main(){
    cout << sizeof(mystruct) << endl;
    void* p1 =  create();
    print(p1);
    return 0;
}
The output of the code is like: 24 1 2.76648e+19 \203\304 ]\303fffff.\204UH\211\345H\201\354\220H\211}\270H\211. for which I suppose is: 24 1 2.2 aaa
I guess there is something wrong with the void* pointer casting, but I can not figure out why. Can someone help?
 
    