zoukankan      html  css  js  c++  java
  • 空指针的理解

    空指针(null pointer)

    空指针:一个被赋值为0的指针


    1、空指针常量(null pointer constant)
      An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.
      一个表达式的值为0或者为零的表达式被强制转成 (void *)类型,都叫空指针常量

      eg: 0 0L 3-3 (void *)0
      注意 (char*) 0 不叫空指针常量,只是一个空指针值

    2、空指针(null pointer)
      如果一个 空指针常量 赋给了一个有类型的指针变量,那么这个指针就叫空指针。它不指向任何的对象或者函数

      eg:p是一个指针,进行 p = 0;、p = 0L;、p = '';、p = 3 - 3;、p = 0 * 17; 中的任何一种赋值操作之后
      对于C语言还可以是 (void *)

      p 成为一个空指针,并且由系统保证空指针不指向任何实际的对象或者函数。 反过来说,任何对象或者函数的地址都不可能是空指针

    3、 NULL
      NULL 是一个宏定义(在/usr/include/linux/stddef.h 中定义), 表示一个空指针常量

      int *p=NULL; //p为一个空指针

    4、空指针的内部实现
      标准没有定义空指针指向内存的什么地址,取决于系统的实现,
      常见的空指针一般指向 0X0 地址

    5、如何判断某个指针是空指针

      判断其地址是否是0即可

      假设 p 是一个指针变量,q 是一个同类型的空指针,要检查 p 是否是一个空指针

    if ( p == 0 )
    if ( p == '' )
    if ( p == 3 - 3 )
    if ( p == NULL ) /* 使用 NULL 必须包含相应的标准库的头文件 */
    if ( NULL == p )
    if ( !p )
    if ( p == q )

    malloc失败时返回的是空指针

     

    参考:http://baike.baidu.com/view/4130506.htm?fr=aladdin

     

  • 相关阅读:
    Ajax调用asp.net后台代码
    浅谈Swift集合类型
    强大的swift字符串
    swift的运算符
    Swift的基本类型和流程控制
    Router和History (路由控制)-backbone
    jq里attr和prop的区别
    文本超出盒子的内容用省略号代替
    利用html5中的localStorage获取网页被访问的次数
    html5的本地存储localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/siqi/p/4063801.html
Copyright © 2011-2022 走看看