在C和C++中NULL的区别

1.在c和c++中特定指针与通用指针相互赋值的问题

特定指针 如:int ,char ,float *
通用指针 如:void*

int main()
{
  int a=10;
  int *p=&a;
  char b='y';
  char *cp=&b;
  void *vp=cp; //特定指针赋给通用指针
  //cp=vp;  //通用指针赋给特定指针,在c中可以,在c++中不可以
  return 0;
}

(1)在c和c++中,特定指针可以赋给通用指针,用于临时存储地址,但缺点是:一是因为没有类型,无法确定内存大小,因此无法解引用;二是无法调整权重,所以不能进行算术运算

(2)在c中,通用指针可以赋给特定指针,但在c++中,通用指针不可以赋给特定指针,在c++中这样规定是为了杜绝不同类型的指针相互赋值

2.c和c++中的NULL的不同定义

在c中,NULL 即(void *)0
在c++中,NULL 即 0
注意:
(1)其实在c中,NULL 也可以是 0,但是因为c语言当时没有考虑到0的问题,已经规定了NULL 为(void *) 0
(2)假如在c++中NULL是(void*)0,则int * p=NULL即 int * p =(void *) 0,这在c++中编译是无法通过的,因为c++中通用指针不可以赋给特定指针。所以在c++中NULL 是 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值