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).
*((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).