如果我有

int a= 5;
long b= 10;
int count0 = 2;
void ** args0;
args0 = (void **)malloc(count0 * sizeof(void *));
args0[0] = (void *)&a;
args0[1] = (void *)&b;

如何将args[0]和args0[1]转换回int和long?
例如
int c=(something im missing)args0[0]
long d=(something im missing)args1[0]

最佳答案

假设您的&a0和&b0应该是&a和&b,并且您的意思是args0[1]用于设置长d,那么您在args0[0]中存储了指向a的指针,在args0[1]中存储了指向b的指针。这意味着您需要将它们转换为正确的指针类型。

int c = *((int *)args0[0]);
int d = *((long *)args0[1]);

关于c - 我如何从void *返回int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3200294/

10-11 22:05