c - 在 C 中增加类型转换的 void 指针

标签 c pointers

我有一个函数,它接受一个 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/

相关文章:

c - 当您在 C 语言中声明参数数量错误的回调时会发生什么?

c - 当我定义数组时真正发生了什么

c - realloc 分配的内存比请求的多

C++删除不存在的指针

C指针和数组问题

c++ - C/C++多线程程序使用rand_r的正确方法

c - 迭代链表并添加新值

c - 固有地基于BitMask设置数组中的值

c - 嵌套范围如何影响堆栈深度?

比较子集的集合直到排列