NULL函数指针

Vor*_*rac 9 c c++ c99

调用null函数指针的行为是什么?

void (*pFunc)(void) = NULL;  
pFunc();
Run Code Online (Sandbox Code Playgroud)

为什么将未使用的函数指针初始化为NULL是可取的?

Hal*_*oum 8

在C和C++中,这被调用undefined behaviour,这意味着这可能导致分段错误,根据您的编译器,运行此代码的操作系统,环境(等等),无论是什么情况都不会导致)意味着.

初始化指向函数的指针或通常指向NULL的指针有助于某些开发人员确保其指针未初始化且不等于随机值,从而防止它们意外地解除引用它.

  • @vonbrand:你是对的:文字"0"可以用作"NULL"指针常量.但这并不意味着NULL指针位于地址0x0或者它是一个全零位模式.`NULL`指针的实际地址是_implementation defined_.令人困惑,我知道,但就是这样. (5认同)
  • @VladLazarenko:标准没有提到地址0x0.关于`NULL`指针它只说两件事:没有函数的有效对象具有地址`NULL`; 并且引用/调用`NULL`指针是UB.现在,实现可以选择记录该特定行为,甚至可以指定"NULL"指针的二进制值.有关更好的解释,请参阅[此其他问题](http://stackoverflow.com/questions/2397984/undefined-unspecified-and-implementation-defined-behavior). (2认同)