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

来源:互联网 发布:sql语言 编辑:程序博客网 时间:2024/05/20 11:22

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())
以上情况会降低程序的可移植性。

原创粉丝点击