【发布时间】:2014-11-30 07:06:50
【问题描述】:
所以我有三个指针变量,*segbase、*offset 和*data。 segbase 和 data 是 void 类型,但 offset 是 int。
我想要实现的是 - 获取 segbase 指向的内存地址,添加偏移量并将生成的内存地址复制到数据中。
由于 segbase 和 data 不是整数类型的指针,因此对它们进行类型转换是有意义的。但是,我在(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);
}
【问题讨论】:
-
永远不要将指针转换为
int。 如果您想将指针增加字节数,请将其转换为char*其目标大小始终为一个字节。然后将其分配给左侧没有强制转换的 void 指针。 -
那你建议我做什么来达到预期的效果?
-
您说 offset 是 into 但您将其显示为 int*
-
我建议想想你的代码做了什么。提示:类型转换表达式不是左值。
标签: c pointers casting type-conversion