这里需要说明的是,当 NULL 定义为“((void *)0)”时,即 NULL 是可以赋值给任何类型指针的值,它的类型为 void*,而不是整数 0,因此初始化“FILE*fp=NULL;”是完全合法的。 而为了区分整数 0 和空指针 0,当需要其他类型的 0 时,即使可能工作,也不能使用 NULL,因为这样处理其格式是错误的,这种类型在非指...
NULL并非总是和0等同,NULL仅仅代表空值,也就是指向一个不被使用的地址,在大多数系统中,都将0作为不被使用的地址,所以就有了类似这样的定义 #define NULL 0 但并非总是如此,也有些系统不将0地址作为NULL,而是用其他的地址,所以说,千万别将NULL和0等价起来,特别是在一些跨平台的代码中,这更是将给你带来灾难。
结果是 int 和指针重载会有冲突,特别是参数为常量 0的时候。 C语言中可以认为两者都是0。但实际是有区别的,\0表示ASCII码的0的八进制的写法,值就是0,通常用于表示0结尾的字符串的结尾,NULL在C语言中定义为(void *)0,是宏,通常用于表示将指针悬空,但在别的语言中,NULL是不一定等同于0的,把指针悬空,和0...
1. Null指针常量:在C语言中,Null指针常量被定义为整数0。在大多数情况下,使用Null指针常量与使用显...
请翻开你的ASCII字符集表吧,一般在你的C语言教材的附录上,没有的话网上查查哦。请看第一个ASCII码,对是0,对应的字符是(Null),其实就是‘\0’,即空字符。判断一个字符串是否结束的标志就是看是否遇到‘\0’,如果遇到‘\0’,则表示字符串结束。而字符‘0’对应的ASCII码是48,48对应的十六进制数就是0x30...
5.6 如果NULL 定义成#define NULL ((char *)0) 难道不就可以向函数传入不加转换的NULL 了吗? 一般情况下, 不行。复杂之处在于, 有的机器不同类型数据的指针有不同的内部表达。这样的NULL 定义对于接受字符指针的的函数没有问题, 但对于其它类型的指针参数仍然有问题(在缺少原型的情况下), 而合法的构造如 ...
大多数人的回答是:'NULL就是系统定义特殊的0,把你初始化的指针指向它,可以防止“野指针”的恶果。' 今天碰到一个C语言的笔试题,还是一道不错的题~~~ Exp 1: #includevoid fun(int *node){ static int N=100; node=&N;}int main(){ int *node=NULL; int a=0; fun(node); a=*node; printf(...
在C语言中,空指针是指指向空地址的指针,其值为NULL。空指针的地址是指空指针所指向的内存地址,也就是空地址。在C语言中,可以使用空指针的地址,但通常不会主动使用它。空指针的地址通常由编译器自动分配,用于表示一个不存在的指针或者一个未初始化的指针。使用空指针的地址可能会导致程序错误,...
NULL 只是一个宏定义,用于标识空值或者0(C里面的话其实就是等于0),在代码中一般用来检查某些值是否等同 0。用一个常量来保存一个固定值然后在代码中使用这个常量或者宏而不是含义不明的数值是良好的变成习惯。会大大提高代码的可读性和可维护性。