C语言中的NULL?

NULL是不是就相当于0?或者'\0'?
想到这个问题是因为下面这个题目:
#include "stdio.h"
main()
{char a[20],*p,b,min;
gets(a);
p=a;
min=*a;
while()
{
{if(*p<min)
min=*p;
p++;
}printf("min=%c",min);
}
} 程序的作用是输出字符串里ASCII码最小的字符,填while后面括号里的空。。
我填的是(*p!=NULL)。大家帮我看下,错了的话纠正一下;谢谢;

慕桂英3389331
浏览 386回答 2
2回答

www说

在C语言中,NULL和0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0用于数值。对于字符串的结尾,使用'\0',它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,也不是普通的数值。拓展资料:关于NULL的使用编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。前面说到"NULL指针无法再进行任何数据访问",其实是视编译器功能而定的。0位置指向的是程序起始,对于不同的编译器,NULL指针的操作结果是不同的:有些是不准读写,有些是只读,甚至读写都允许。编译器是人定的。

慕码人2483693

在头文件 中 定义的一个常量 NULL=0;用于指将指针 悬空(不指向任何位置)楼上的指向0内存不对的.int *p=NULL;NULL是个好东西,给一出生的指针一个安分的家NULL不是被定义为0,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。NULL总是等于0吗?对这个问题的回答与“等于”所指的意思有关。如果是指“与。比较的结果为相等”,例如:if(/* ... */){p=NULL;}else{p=/* something else */;}/* ... */if(p==0)那么NULL确实总是等于0,这也就是空指针定义的本质所在。如果是指“其存储方式和整型值。相同”,那么答案是“不”。NULL并不必须被存为一个整型值0,尽管这是NULL最常见的存储方式。在有些计算机中,NULL会被存成另外一些形式。如果想知道NULL是否被存为一个整型值0,可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果将一个空指针强制转换成整类型,那么=所看到的很可能就是一个非零值)。
打开App,查看更多内容
随时随地看视频慕课网APP