在C中增加转换的void指针

时间:2016-05-04 07:58:55

标签: c pointers

我有一个将void指针作为参数的函数。我想将指针强制转换为特定类型(例如double),然后递增它。下面的代码完全符合我的要求

function(void *out){
  double *temp = (double*) out;
  temp++;
  out = temp;

  /* do something with out here */
}

但是,如果我把所有内容都放在像

这样的表达式中
(double*)out++;

((double*)out)++;

编译器不喜欢它。有更优雅的方式吗?

1 个答案:

答案 0 :(得分:4)

表达式

((double*)out)++;

是有问题的,因为它试图增加演员表的结果,而不是lvalue。但是,将1添加到演员表的结果中并将其分配回out是完全正常的:

out = ((double*)out)+1;