我有一个函数,它接受一个 void 指针作为参数。我想将该指针转换为特定类型(例如 double ),然后递增它。下面的代码正是我想要的
function(void *out){
double *temp = (double*) out;
temp++;
out = temp;
/* do something with out here */
}
但是,如果我将所有内容都放在一个表达式中,例如
(double*)out++;
或
((double*)out)++;
编译器不喜欢它。有没有更优雅的方法来做到这一点?
最佳答案
表达式
((double*)out)++;
是有问题的,因为它试图增加转换的结果,这不是 lvalue。 .但是,将 1
添加到强制转换的结果并将其分配回 out
是完全没问题的:
out = ((double*)out)+1;
关于c - 在 C 中增加类型转换的 void 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021783/