当前位置:首页 > 芯闻号 > 充电吧
[导读]C++之父的C++圣经《C++程序设计语言 特别版》中说:大家不要听某些人说判断指针是否为空用(p==NULL)或(p!=NULL)的格式,C++之父认为这样写是不好的,提倡直接写(p)或(!p)的形

C++之父的C++圣经《C++程序设计语言 特别版》中说:
大家不要听某些人说判断指针是否为空用(p==NULL)或(p!=NULL)的格式,C++之父认为这样写是不好的,提倡直接写(p)或(!p)的形式。 在win32开发中,if ( NULL == p )是极好的写法。但不要写成:if ( p == NULL ) 
C++之父主要是反对使用“NULL”,因为在某些特殊的开发环境叫,“NULL”并非补定义成地址0,也可能是一个跟平台相关的,用于标记非法地址的其它地址。
但按照C++标准的规定,只有等于0的地址可以被随便delete多次,因此如果是别的地址,那至少C++标准就给不了任何说法。至于是if(p == 0)和if(p != 0),还是if(p)或者if(!p),这个找不出什么重大区别,个人觉得。
不过,从代码的可扩展性上讲,写成后者可能好一些,因为如果有一天你决定改用一些原生指针的包装类(比如类似那种auto_ptr模板的)来代替直接操作原生指针,而那个类可能重载了operator!,后者可能让你直接利用这些设施 林锐提倡if ( p == NULL )是从代码的可读性上考虑的,一看就是在判断一个指针,而不是判断一个bool值,它提倡只有bool值才使用if(p)或者if(!p)的形式。
BS是从可移植方面考虑。
if( p == NULL ),一眼就可以看出这是在判断一个指针,但如果写成if(!p),那你必须要知道p倒底是什么才能知道这个判断的含义。另外,不要写成if( p == NULL )这样的形式,应该写成:if ( NULL == p )。
如果你误写成了if ( NULL = p ),那编译时就会提示你,但如果是前者,这个错误就隐藏起来了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

万用表是一种可以测量多种项目的便携式仪表,在电子技术中主要用来测量电压、电流与电阻。在电子元器件选用中,它可用来粗略检测元器件的好坏或性能优劣

关键字: 指针 万用表

万用表又称为复用表、多用表、三用表、繁用表等,是电力电子等部门不可缺少的测量仪表,一般以测量电压、电流和电阻为主要目的。万用表按显示方式分为指针万用表和数字万用表

关键字: 指针 万用表 数字万用表

字符串是C语言中最基础的概念,也是最常被用到的。在嵌入式开发中,我们经常要将一些字符串通过串口显示到串口助手或调试终端上,作为信息提示,以便让我们了解程序的运行情况;或者是将一些常量的值转为字符串,来显示到液晶等显示设备...

关键字: 字符串 指针 C 语言

指针使得 C 语言能够更高效地实现对计算机底层硬件的操作,而计算机硬件的操作很大程度上依赖地址,指针便提供了一种对地址操作的方法,在一定意义上,指针是c语言的精髓,所以一定要耐心看完。指针对于很多c语言初学者来说可能难以...

关键字: 指针 C 语言 计算机

其实在 c++语言里面const修饰的才算是一个真正的常量,在 c 语言中 const 可以说是个“冒牌货”。为什么会这样?其实是 c++ 编译器对 const 进行了加强,当 c++ 编译器遇到常量声明时,不会像 c...

关键字: c++ C语言 const

返回函数的引用去初始化一个新的引用这个和前面一样,都是不会产生副本,但是现在是用返回值去初始化一个引用声明c,也就是说这时候变成了变量temp的别名,在c的生命周期内temp是一直有效的,这样做完全可以。

关键字: c++ 返回值 引用声明

有深入理解RTOS原理,或阅读过RTOS源码的同学应该知道:RTOS实现任务间通信通常是由一系列指针进行操作实现的。

关键字: RTOS 指针 数组

实际上函数指针本质也是一个指针,只不过这个指针指向的不是内存中的一段数据而是内存中的一段代码

关键字: 指针 数据 代码

C++是一种面向对象的高级程序设计语言,是C语言的超集。

关键字: c++ C语言

C 为什么不加入垃圾回收机制!

关键字: 垃圾回收 指针
关闭
关闭