关于C语言与C++对与NULL宏定义问题

   C语言中对NULL的定义是:#define (void *)0.而在C++里为什么把NULL定义成: #define NULL 0呢?

 C语言是比C++提前问世,对于C语言来说,它把NULL宏定义成:#define NULL (void *)0.   
 当我们在C环境下写代码时,比如:int *p=0;是正确的,就说明在C语言里可以把一个空指针赋值给其他类型指针,
  也可以说,C语言里void*可以和任意指针进行互相隐式转换。但在C++是不允许把空指针赋值给其他类型指针!
  因为这样会造成隐式转换问题,比如:  
  char *p ;
  void *t = p;
  如果void*类型可以赋值给其他类型的话,就会这样:
  int *q = t;
  这样就会隐式把char *转化为int *;就会造成不安全!
  所以C++进行了改进。把NULL宏定义为: #define NULL 0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值