我有一个将void指针作为参数的函数。我想将指针强制转换为特定类型(例如double),然后递增它。下面的代码完全符合我的要求
function(void *out){
double *temp = (double*) out;
temp++;
out = temp;
/* do something with out here */
}
但是,如果我把所有内容都放在像
这样的表达式中(double*)out++;
或
((double*)out)++;
编译器不喜欢它。有更优雅的方式吗?
答案 0 :(得分:4)
表达式
((double*)out)++;
是有问题的,因为它试图增加演员表的结果,而不是lvalue。但是,将1
添加到演员表的结果中并将其分配回out
是完全正常的:
out = ((double*)out)+1;