征服C指针笔记之关于指针

NULL、0、‘\0’
关于这一点可以这么去理解:NULL是空指针,’\0’是空字符,0是值为0,一般来说大多数机器都认为NULL就是空字符的意思(一般来说),但是也有一些机器在定义NULL的时候,我们发现它的宏定义不是(#define NULL 0)那就悲剧了,这个时候的空指针就不能简单的理解为是空字符了,而要理解成定义的时候的字符了。

在C语言中,当int*p=1;的时候,是会报错的,虽然都是int 型的数据,但是当int*p=0;的时候就会发现没有报错,这样的话官方编译器是这么解释的“当常量0处于应该作为指针使用的上下文中时,它就作为空指针在使用。
当然也有例外
在如下情况下,编译器也可能会理解不了”应当将0作为指针进行处理的上下文“
1、没有原型申明的函数的参数
2、可变长参数函数中的可变部分的参数(例如printf())
以上情况会降低程序的可移植性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值