从Void *参数中获取整数数组

时间:2015-02-22 21:39:48

标签: c

给定一个具有参数void * X的函数,如何将整数数组x作为参数传递,并将该函数中的局部整数变量y设置为X?

    ...

int x[2];

x[0] = 1;
x[1] = 2;

foo((void*)x);

        ... 
/*foo function:*/

void foo(void *X) {
//I want a local variable y (integer array) to be set to X

}

1 个答案:

答案 0 :(得分:2)

你只需要声明一个int *指针并为其指定void *指针,就像那样简单

void foo(void *X) {
    int *x;
    x = X;
    if (x == NULL) /* prevent NULL dereference */
        return;
}

并且不需要f((void *)x);,您可以使用f(x);

此外,根据您的需要,您可能需要创建一个结构并将指针传递给结构,该结构包含您的数组可以容纳的项目数,这将更安全,并且需要维护。

这是C11草案1570的引用

  

§6.3.2.3Poitners

     
      
  1. 指向void的指针可以转换为指向任何对象类型的指针。指向任何对象类型的指针可以转换为指向void并再次返回的指针;结果将与原始指针进行比较。
  2.