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)仍然适用吗?
答案 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 */
}