#include <iostream>
func(void *ptr)
{
*ptr = NULL;
}
int main()
{
void *ptr = (int*)malloc(sizeof(int));
func(ptr);
return 0;
}
有人可以幫我解決這個問題。我想給這個指針分配NULL。不要在Main()中做任何改變。無效指針錯誤
#include <iostream>
func(void *ptr)
{
*ptr = NULL;
}
int main()
{
void *ptr = (int*)malloc(sizeof(int));
func(ptr);
return 0;
}
有人可以幫我解決這個問題。我想給這個指針分配NULL。不要在Main()中做任何改變。無效指針錯誤
使用ptr = NULL;
並且不投下malloc
的回報。
指針按值傳遞。所以改變func(void *ptr)
爲func(void **ptr)
並通過func(&ptr)
其實,一旦簽名被固定,它應該是'* ptr = NULL;' – StoryTeller
那麼,如果OP通過引用傳遞指針,那麼它確實應該是'* ptr = NULL' :) –
@StoryTeller:同意你。 – David
只是不投,因爲C malloc默認返回void指針。那麼程序應該很好運行
Noo ..還是一樣的東西!!!我無法理解..不能我* ptr = NULL。沒有人給出exxact的原因..而不是無視 –
爲什麼你需要這個?要更改函數調用中的指針,您需要將指針傳遞給指針。但是我擔心你甚至不懂通常的指針。 – JIghtuse
在C中,你不應該使用'malloc'(或任何返回void指針的函數)的返回值。你只需要在C++中。 –
void func(void * ptr) { ptr = NULL; } int main() void * ptr = malloc(sizeof(int)); func(ptr); return 0; } –