If I have a void pointer, how do I put an int into it?

前端 未结 5 1815
情歌与酒
情歌与酒 2021-02-04 09:47

I have an array of arbitrary values, so I have defined it as an array of void pointers, so I can point to any kind of information (like int, character arrays, etc).

5条回答
  •  误落风尘
    2021-02-04 10:02

    *((int*)data[0])=x;
    

    will do it.

    You might want to consider using a union. Something like this:

    union myvalues
    {
        int i;
        double d;
        long l;
    };
    

    You could then have

    union myvalues *foo[10];
    foo[0] = malloc(sizeof(union myvalues));
    foo[0]->i = x;
    

    You can also typedef the union. sizeof(union myvalues) will be the maximum of sizeof the members. So if you have int i; and char c[40] in the union, sizeof(union myvalues) will be 40. Writing to i will then overwrite the first 4 characters in c (assuming your ints are 4 bytes).

提交回复
热议问题