无效使用void表达式 - 使用类型转换添加不同类型的2个指针

时间:2014-11-30 07:06:50

标签: c pointers casting type-conversion

所以我有三个指针变量,* 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);

}

1 个答案:

答案 0 :(得分:1)

我认为,如果offset是字节偏移,你想要的是

data = (void*)((char*)segbase + *offset);

一些C编译器处理offseting void *指针,好像它们是char *,在这种情况下它是

data = segbase + *offset;

你确定偏移量也是指针而不是普通的int吗?