将int数组转换为C中的指针

时间:2011-03-15 06:03:38

标签: c arrays function pointers

void test()
{
       int buf[1000];

       //populate buf
       foo(buf);//is this correct? Can we pass buf as a pointer that foo expects?



}
void foo(void*ptr)
{}

编辑: 如果foo是fwrite,上面的(传递buf的机制,以便提供内容写入某个文件的fwrite)仍然适用吗?

5 个答案:

答案 0 :(得分:2)

它在C. foo参数中完全有效是指向任何类型的指针。传递数组时,它会衰减到指向数组第一个元素的指针(即传递第一个元素的地址位置)。所以,

 ptr -> &buf[0] ;

答案 1 :(得分:1)

是的,你可以这样做。

buf是数组的基指针。

答案 2 :(得分:1)

是的,您将始终将buf传递给指针。

答案 3 :(得分:1)

是的,这是正确的。您可以在foo函数中使用“ptr”指针。 http://codepad.org/HwYd0GAh

答案 4 :(得分:1)

正如其他答案指出的那样,,您可以将buf传递给该函数。

但是,在函数内部,变量ptr的类型为void*ptr本身只能做一些事情。通常你将它(有或没有演员)转换成相关的东西,比如int*

void foo(void *ptr) {
    int *iptr;
    iptr = ptr;
    /* now use iptr */
}