社区
C语言
帖子详情
一个指针在定义后是应该被付值为0,还是NULL?
yeahchang
2003-11-05 06:44:29
好像微软付为NULL(NULL,0,void*有何区别?)
(原来记得有过类似的文章,但现在找不着了!)
...全文
154
11
打赏
收藏
一个指针在定义后是应该被付值为0,还是NULL?
好像微软付为NULL(NULL,0,void*有何区别?) (原来记得有过类似的文章,但现在找不着了!)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
palstu
2003-11-06
打赏
举报
回复
在头文件stido.h中,NULL是0的宏定义
#define NULL 0
TianGuangZao
2003-11-06
打赏
举报
回复
comp.lang.c 对这类常见问题有详细的 FAQ 解答。
http://www.eskimo.com/~scs/C-faq/s5.html
danielhf
2003-11-05
打赏
举报
回复
在C++中, 给指针赋0是安全的,表示它不指向任何对象, C中有些不好的习惯, 比方说#define
(void*)0 是一个C转换,表示是一个指针, 而0在默认情况下是一个int.
短歌如风
2003-11-05
打赏
举报
回复
C允许从void*到任意指针的隐式转换,而C++是不允许的,但允许整数0到任意指针的转换。
在C++中,
int * a;
a = (vod*) 0;是不行的,因此C++中要把NULL定义为0而不是((void*)0)。
无论在C++中还是在C中,都应该用NULL。也许某一天C++语言就会改为不允许整数0到指针的转换而改用一个关键字表示空指针。这时把NULL重定义一下就行了。用0表示空指针的代码都是为了少包含一个头文件。
yeahchang
2003-11-05
打赏
举报
回复
/* _null.h
Definition of NULL.
*/
/*
* C/C++ Run Time Library - Version 10.0
*
* Copyright (c) 1987, 2000 by Inprise Corporation
* All Rights Reserved.
*
*/
/* $Revision: 9.1 $ */
#ifndef NULL
# if defined(__cplusplus) || defined(_Windows)
# define NULL 0
# else
# define NULL ((void *)0)
# endif
#endif
那0和(void *)0有什么不同??
wongsung
2003-11-05
打赏
举报
回复
正规一点应该用NULL
指针会指向如下地址
0X00000000
tonybaobao
2003-11-05
打赏
举报
回复
定义了一个指针,最好赋予一个特定的内存单元。不推荐赋0的。
liubingqian
2003-11-05
打赏
举报
回复
上面错了,是
#define NULL 0
liubingqian
2003-11-05
打赏
举报
回复
在C++中用0的多,而C中用NULL的多。其实是习惯问题。
liubingqian
2003-11-05
打赏
举报
回复
在stdio.h中是这样定义的:
#define 0 NULL
所以它们是一样的。
hawkxjy
2003-11-05
打赏
举报
回复
没有区别的,都是一样的
VC中,用宏定义把0和NULL定位相同的。
C语言
指针
(关于
定义
指针
为
NULL
)深入了解
C语言
指针
中:
指针
是C语言最重要的概念之一,用于储存变量的地址。 &是取地址运算符,*是间接运算符。(C语言中:%p是输出地址的转换说明)。 “*号在
定义
变量时,表示类型是
指针
,如 int *p =
NULL
表示这是
一个
叫p的
指针
; *号在运算时,表示取
指针
指向地址的内容。 首先要说的是:非堆分配的内存是不需要free的。 再说p=
NULL
;
指针
的变化是 p指向了
一个
地址为0的内存,这...
C - 为什么
指针
常常初始化为
NULL
?
如果程序
定义
了
一个
指针
,就必须要立即让它指向
一个
我们设定的空间或者把它设为
NULL
,如果没有这么做,那么这个
指针
里的内容是不可预知的,即不知道它指向内存中的哪个空间(即野
指针
),它有可能指向的是
一个
空白的内存区域,可能指向的是已经受保护的区域,甚至可能指向系统的关键内存,如果是那样就糟了,也许我们后面不小心对
指针
进行操作就有可能让系统出现紊乱,死机了。空
指针
是
一个
特殊的
指针
值,也是唯一
一个
对任何
指针
类型都合法的
指针
值。、通用
指针
,首先说一下什么是
指针
,只要明白了
指针
的含义,你就明白
null
的含义了。...
1:什么是空
指针
?区分
NULL
、0 和 ‘\0‘
一、什么是空
指针
? 空
指针
是
一个
特殊的
指针
值。 空
指针
是指可以确保没有向任何
一个
对象的
指针
。通常使用宏
定义
NULL
来表示空
指针
常量值。 空
指针
确保它和任何非空
指针
进行比较都不会相等,因此经常作为函数发生异常时的返回值使用。另外,对于第 5 章的链表来说,也经常在数据的末尾放上
一个
空
指针
来提示:“请注意,后面已经没有元素了哦。” 在如今的操作系统下,应用程序一旦试图通过空
指针
引用对象,就会马上招致
一个
异常并且当前应用程序会被操作系统强制终止。因此,如果每次都使用
NULL
来初始...
解析#define
NULL
((void *)0)——野
指针
,空
指针
和 void*
在编写程序时,我们经常会遇到这样的语句:#define
NULL
0 #define
NULL
((void*)0)空
指针
是
一个
被赋值为0的
指针
,在没有被具体初始化之前,其值为0.
NULL
是
一个
标准规定的宏
定义
,用来表示空
指针
常量。以上两种
定义
都可以用来
定义
一个
空
指针
。那么问题来了,我们为什么要
定义
一个
空
指针
NULL
?下面先了解一下野
指针
一:野
指针
“野
指针
”不是
NULL
指针
,是指向“垃圾”内
指针
赋值为
NULL
;是什么意思呢?
int *p=
NULL
;这个
NULL
是什么意思? 网上百度了下,有人说
NULL
=0;是在头文件中
定义
的; 首先要说的是:非堆分配的内存是不需要free的。 再说p=
NULL
;
指针
的变化是 p指向了
一个
地址为0的内存,这就提醒别人不要对这个
指针
进行解引用的操作。
NULL
其实就是0x0。p=
NULL
后,p指向0x0这个地址。此处的地址,你没有访问权限。
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章