社区
C语言
帖子详情
一个指针在定义后是应该被付值为0,还是NULL?
yeahchang
2003-11-05 06:44:29
好像微软付为NULL(NULL,0,void*有何区别?)
(原来记得有过类似的文章,但现在找不着了!)
...全文
165
11
打赏
收藏
一个指针在定义后是应该被付值为0,还是NULL?
好像微软付为NULL(NULL,0,void*有何区别?) (原来记得有过类似的文章,但现在找不着了!)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
)深入了解
“*号在
定义
变量时,表示类型是
指针
,如 int *p =
NULL
表示这是
一个
叫p的
指针
; *号在运算时,表示取
指针
指向地址的内容。 首先要说的是:非堆分配的内存是不需要free的。 再说p=
NULL
;
指针
的变化是 p指向了
一个
地址...
1:什么是空
指针
?区分
NULL
、0 和 ‘\0‘
一、什么是空
指针
? 空
指针
是
一个
特殊的
指针
值。...在如今的操作系统下,应用程序一旦试图通过空
指针
引用对象,就会马上招致
一个
异常并且当前应用程序会被操作系统强制终止。因此,如果每次都使用
NULL
来初始...
解析#define
NULL
((void *)0)——野
指针
,空
指针
和 void*
#define
NULL
((void*)0)空
指针
是
一个
被赋值为0的
指针
,在没有被具体初始化之前,其值为0.
NULL
是
一个
标准规定的宏
定义
,用来表示空
指针
常量。以上两种
定义
都可以用来
定义
一个
空
指针
。那么问题来了,我们为什么要...
什么是“
NULL
指针
”,“悬空
指针
”和“野
指针
”?
另外,当由它指向的内存在程序中间被释放时,我们
应该
使
指针
为
NULL
。 2,什么是悬空
指针
? 悬空
指针
是没有指向有效内存位置的
指针
。当删除或释放对象时,如果不修改
指针
的值,就会出现悬空
指针
,因此
指针
仍然指向...
指针
赋值为
NULL
;是什么意思呢?
int *p=
NULL
;这个
NULL
是什么意思?...
指针
的变化是 p指向了
一个
地址为0的内存,这就提醒别人不要对这个
指针
进行解引用的操作。
NULL
其实就是0x0。p=
NULL
后,p指向0x0这个地址。此处的地址,你没有访问权限。
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章