ARF*_*ARF 1 c null pointers function-pointers
继这个关于函数指针的优秀SO答案之后 ; 给定一个在C中定义的函数指针,如:
typedef void (*Callback)(int argument);
Callback my_callback = 0;
Run Code Online (Sandbox Code Playgroud)
如何检查回调函数指针是否已分配非空值?
my_callback == 0
还是&my_callback == 0
?
你应该检查,my_callback == 0
因为它是一个函数指针.
而且,您正在考虑的第二个选项:
&my_callback == 0
Run Code Online (Sandbox Code Playgroud)
是地址,你甚至会被编译器警告:
warning: the comparison will always evaluate as ‘false’ for the address of ‘my_callback’ will never be NULL [-Waddress]
if(&my_callback == 0)
^
Run Code Online (Sandbox Code Playgroud)