1楼:匿名用户
函数的声明:
char *gets(
char *buffer
);它有一个参数buffer,指向char类型的指针。指向输入字符串缓冲区地址。如果函数调
内用成功则它的返回容值为buffer的地址,如果调用失败则返回null。
所以while(gets(buff)!=null)这行**就是只要gets函数调用失败就停止循环,但一般这个函数调用失败的机率是很小的,所以就出现了死循环。要明白这一点必需知道,gets函数的返回值为输入字符串的地址,而null不等于空字符串,也不等于空字符串的地址。
把那个程序改为如下的形式就对了。
#include "stdio.h"
main()
/*注:strcmp为字符串比较的函数,当两字符串相同时返回0*/
2楼:大狂哥灬
null就是空的意思,常用来表示控指针例如 *p=null
3楼:匿名用户
null可台直接使用
void* p = null;
4楼:
null就是0
#define null 0
直接输入0就行
c语言中null有什么作用?具体用法是什么?
5楼:小恼
给x变量的空间表示为空,表示没有存储数据。如果x = 0;表示x的变量中存储了一个0元素的值。
6楼:百度用户
null 其实就是 #define null 0 也就是说它就是0 不过是写**的时候为指针什么的赋值或判断指针是否为空时看起来直观一些。
c语言中的null
7楼:乐跑小子
在头文件 中 定义的一个常量 null=0;
用于指将指针 悬空(不指向任何位置)楼上的指向0内存不对的.
int *p=null;
null是个好东西,给一出生的指针一个安分的家
null不是被定义为0,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。
null总是等于0吗?
对这个问题的回答与“等于”所指的意思有关。如果是指“与。比较的结果为相等”,例如:
if(/* ... */)
else
/* ... */
if(p==0)
那么null确实总是等于0,这也就是空指针定义的本质所在。
如果是指“其存储方式和整型值。相同”,那么答案是“不”。null并不必须被存为一个整型值0,尽管这是null最常见的存储方式。在有些计算机中,null会被存成另外一些形式。
如果想知道null是否被存为一个整型值0,可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果将一个空指针强制转换成整类型,那么=所看到的很可能就是一个非零值)。
8楼:匿名用户
c语言null定义,定义如下:
#undef null
#if defined(__cplusplus)#define null 0
#else
#define null ((void *)0)#endif
所以我觉得,如果一个指针被赋予null,应该就相当于这个指针执行了0x0000这个逻辑地址,但是c语言中0x0000这个逻辑地址用户是不能使用的(有些人说是因为0x0000没有映射到物理地址,也有人说是因为0x0000映射到的地址是操作系统用于判断野指针的,我也不太懂,总之就是用户不能使用啦),所以当你试图取一个指向了null的指针的内容时,就会提示段错误,听着有点绕,看程序:
int *node=null;
int a=0;
a=*node;
printf("%d\n",a);
由于node执行的是null,也就是逻辑地址0x0000,而这个地址用于是不能访问的,所以编译器提示段错误。
9楼:d小太阳
在c语言中,null和0的值都是一样的,但是为了目的和用途及容易识别的原因,null用于指针和对象,0用于数值。对于字符串的结尾,使用'\0',它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,也不是普通的数值。
拓展资料:
关于null的使用
编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为null,待到再度使用时,重新对其赋值以及进行指针类型转化。
前面说到"null指针无法再进行任何数据访问",其实是视编译器功能而定的。0位置指向的是程序起始,对于不同的编译器,null指针的操作结果是不同的:有些是不准读写,有些是只读,甚至读写都允许。
编译器是人定的。
10楼:高金山
#define null ((void*)0)
其值是0,但意义是空指针
'\0'的值也是0,但意义是字符串结束符
11楼:阳光没有眼睛
可以的null别定义为
#define null ((void *)0)
'\0'是字符,ascii是0
12楼:匿名用户
null的定义是:
#define null (*(void*)0)简而言之就是一个打包过的0.
while后面应该填写
'\0' != *p
因为按照习惯,*p是一个字符变量.
但是你填
null != *p
或者就是
*p都可以.
13楼:匿名用户
null, 大写,有这样一个定义: #define null 0 你能看到? 看vc里边应该能看到如果没有小写null,你也可以这样:
#define null 0 这样就可以,呵呵。
14楼:匿名用户
指针可以赋值null,但数值只能赋值为0.*p是表示指针p指向内存块中的值。所以不能赋值给null。null不相当于0.
'\0'就更不是了。它是表示什么也没有。例如指针被赋值了null表示这个指针没有指向任何地址。在c++中指针可以赋值为0,表示为null。而0表示个数值在c中。
这个**while() 这里好像有错误。
15楼:匿名用户
反正null就是0,一般用来形容指针是空的.
至于你说的null == '\0' , 只是因为'\0'也是数值0而已
16楼:匿名用户
tv在 6000008i。,,个
+凉皮。了
17楼:唐甄甄甄
应该是p!=null
c语言中null有什么作用?具体用法是什么?
18楼:
null
其实就是
#define null 0
也就是说它就是0
不过是写**的时候为指针什么的赋值或判断指针是否为空时看起来直观一些
19楼:匿名用户
null 属性指定数组或指针值是否可以为 null。
pre 和 post 特性上允许此属性,此属性只能应用于数组或指针数据类型。
必须通过使用下列值之一来设置 null 属性:
sa_yes - 此值为 null。
sa_no - 此值不为 null。
sa_maybe - 此值可以为 null。
注意 sa_ 前缀对于 c++ 是可选的。
示例下面的**演示如何使用 null 属性:
以带有颜色区分的格式查看复制到剪贴板打印// c#include
void f([sa_pre(null=sa_no)] char** pc);
// c++
#include
using namespace vc_attributes;
void f([pre(null=no)] char** pc);
20楼:匿名用户
在stdio.h(或iostream)中定义:#define null 0
作用就是初始化,int a;编译器会赋一个不可预知的值,int a = null; a就是0。同理是指针,而且尤其是指针。一个空指针(int* p = null;)比一个野指针(int *p;)要安全的多。
在很多书籍中都提倡使用前后的指针都要赋null。
21楼:匿名用户
null就是空的意思,一般为0
22楼:匿名用户
为空,或缺省值,不用赋值
c语言的 null是什么
23楼:匿名用户
在单链表中使用时会用到
最后一个元素的后接指针为空(null)
具体到程序的话
不好说```
null一般只是在操作指针的时候才会用到的!
24楼:沒囿叻結局
null,本意是"空的,元素只有零的"意思。null和0的值都是一样的,但是为了目的和用途及容易识别的原因,null用于指针和对象,0用于数值。
例:#include
int main()
输出,单步调试可以看出执行int *p=null,p的值为0x00000000,可以看出,null在实际底层调用中就是0。
c语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的d.m.
ritchie于1972年推出,1978年后,c语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到c语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
25楼:匿名用户
null 就是错误的意思
找不到文件就是它
26楼:**的可乐
null在实际的底层**中就是0。
比如int *p; // 这时候p的值由系统分配p=null;
则p实际在bebug窗口看到的结果为0x00000000。
--------------------------------关于你的**:
(1) if(fp=("i:\\woailuo.c","r"==null) 写错,没写fopen,还少个括号
(2) 注释格式应该是/* */
fopen函数的作用是按照一定格式打开一个文件,如果打开成功,则返回该文件的指针,如果失败,则返回空指针(null,或者可以直接认为是0)。
所以,判断文件打开失败与否,应该这样写:
if( ( fp=fopen("somefile.dat","r") ) != null )
/* 打开成功了,随便干点什么 */
else
/* 打开失败,显示出错信息 */
c语言中是null什么意思?
27楼:农连枝弥雀
在头文件
中定义的一个常量
null=0;
用于指将指针
悬空(不指向任何位置)楼上的指向0内存不对的.
int*p=null;
null是个好东西,给一出生的指针一个安分的家
null不是被定义为0,就是被定义为(void
*)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。
null总是等于0吗?
对这个问题的回答与“等于”所指的意思有关。如果是指“与。比较的结果为相等”,例如:
if(/*
...*/)
else
/*...
*/if(p==0)
那么null确实总是等于0,这也就是空指针定义的本质所在。
如果是指“其存储方式和整型值。相同”,那么答案是“不”。null并不必须被存为一个整型值0,尽管这是null最常见的存储方式。在有些计算机中,null会被存成另外一些形式。
如果想知道null是否被存为一个整型值0,可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果将一个空指针强制转换成整类型,那么=所看到的很可能就是一个非零值)。
在c语言程序中null指针常量的作用是什么
1楼 匿名用户 用来表示空指针。 在c中,变量可以是任何值 但一个非法的指针值,会导致访问出错,程序崩溃,或者出现不可预知后果。 所以 需要一个值,标记这个指针是非法的 null的值为0,在计算机中,是不可能访问0地址的。 所以用null表示这个指针还没有被赋值。 比如if s null s 这样赋...
C语言程序中的null和0的区别是什么
1楼 召走刀文 null一般表示空指针,也就是这个指针没有指向任何地址。你也可以简单的理解为指针变量初始化时赋值 0 是字符串的结束符。例如字符串char p abc 实际上,一共有4个字符,分别是 a b c 0 ,所以当用数组来保存这个字符串时,就必须至少要有4个元素的数组。 对于gets函数,...
c语言中的define是什么意思,有什么作用,怎样用
1楼 匿名用户 宏定义,用于定义全局变量 如 define num 1 那么在你的程序里mun就等于1 2楼 匿名用户 c语言中, define 是一种编译预处理指令,称为宏定义指令。它后面至少空一个格,再写符号常量的名称 它属于标识符 ,再空至少一个格,写符号常量的值。进行了宏定义以后,其默认作用...