所以我有三个指针变量,* segbase,* offset和* data。 segbase和data的类型为void,但offset是int。
我想要实现的是 - 获取segbase指向的内存地址,向其添加偏移量并将生成的内存地址复制到数据中。
由于segbase和数据不是整数类型的指针,因此对它们进行类型转换是有意义的。但是,我得到错误"无效使用void表达式"在(int*)*data = (int*)*segbase + *offset;
int main()
{
void *segbase;
int *offset;
void *data;
printf("\nAddress of segbase = %u", segbase);
printf("\nAddress of offset = %u", offset);
printf("\nAddress of data = %u", data);
printf("Now performing the function");
(int*)*data = (int*)*segbase + *offset;
printf("\nAddress of data = %u", data);
}
答案 0 :(得分:1)
我认为,如果offset是字节偏移,你想要的是
data = (void*)((char*)segbase + *offset);
一些C编译器处理offseting void *指针,好像它们是char *,在这种情况下它是
data = segbase + *offset;
你确定偏移量也是指针而不是普通的int吗?