0%

C语言 空指针

空指针

  • 所谓的空指针就是表示“未分配”或者“尚未指向任何地方”的“特殊”指针;
  • 在源码中用来表示空指针的空指针常量使用整数0,且在很多机器上都在内部采用所有位都是0的字来表示空指针,但C语言不保证第二点;
  • 空指针在概念上不同于未初始化的指针。空指针可以确保不指向任何对象或函数,而未初始化的指针则可能指向任何地方;
  • 根据语言定义,在指针上下文中的“值为0的整型常量表达式”会在编译时转换为空指针,但是,传入函数的参数不一定被当做指针上下文。所以,在函数调用时对所有的空指针进行类型转换可能是防止可变参数和无原型函数出问题的最安全的方法;
  • 为了让程序中的空指针使用更加明确,特意定义了一个标准预处理宏NULL,其值为空指针常量;
  • 在有些编译器头文件中定义NULL为0L,是因为在有些机器上指针比整型大,比如large模式的PC兼容机上;
  • 关于空指针,有两条规则必须遵循:
  • 当在源码中需要空指针常量时,用“0”或“NULL”;

如果在函数调用中“0”或“NULL”用作参数,把它转换成被调函数需要的指针类型即可;

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道