2013-11-21 94 views
-9
#include <iostream> 

func(void *ptr) 
{ 
*ptr = NULL;   
} 

int main() 
{ 
void *ptr = (int*)malloc(sizeof(int)); 
func(ptr); 
return 0; 
} 

有人可以帮我解决这个问题。我想给这个指针分配NULL。不要在Main()中做任何改变。无效指针错误

+0

为什么你需要这个?要更改函数调用中的指针,您需要将指针传递给指针。但是我担心你甚至不懂通常的指针。 – JIghtuse

+0

在C中,你不应该使用'malloc'(或任何返回void指针的函数)的返回值。你只需要在C++中。 –

+0

void func(void * ptr) { ptr = NULL; } int main() void * ptr = malloc(sizeof(int)); func(ptr); return 0; } –

回答

0

使用ptr = NULL;并且不投下malloc的回报。

2

指针按值传递。所以改变func(void *ptr)func(void **ptr)并通过func(&ptr)

+1

其实,一旦签名被固定,它应该是'* ptr = NULL;' – StoryTeller

+0

那么,如果OP通过引用传递指针,那么它确实应该是'* ptr = NULL' :) –

+0

@StoryTeller:同意你。 – David

0

只是不投,因为C malloc默认返回void指针。那么程序应该很好运行

+0

Noo ..还是一样的东西!!!我无法理解..不能我* ptr = NULL。没有人给出exxact的原因..而不是无视 –