#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; } –