2013-11-21 127 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的原因..而不是無視 –