社区
C语言
帖子详情
空指针NULL和内存0地址?
suzhiwei411
2011-03-17 04:34:55
char *str = NULL;
初始化为空指针 ,这时候str的值为0x0;那么这是内存的首地址 吗?空指针不是什么也不指向吗?那么如果要指向一个内存首地址的指针怎么定义呢?
...全文
5061
11
打赏
收藏
空指针NULL和内存0地址?
char *str = NULL; 初始化为空指针 ,这时候str的值为0x0;那么这是内存的首地址 吗?空指针不是什么也不指向吗?那么如果要指向一个内存首地址的指针怎么定义呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
suzhiwei411
2011-03-18
打赏
举报
回复
明白了,谢谢大家
勤奋的沉沦
2011-03-18
打赏
举报
回复
2
#define NULL (void *)0
此乃NULL的真相。
辰岡墨竹
2011-03-18
打赏
举报
回复
在Windows里就是指向内存首地址的指针,本来C语言中一般用(void*) 0作为NULL空指针的值,由C编译器保证空指针不指向任何实际的对象或者函数。Windows里这个是0,别的系统可能是实际是别的值。
只不过在C++系统,由于存在严格的类型转化的要求,所以通常选0作为空指针常量(这是C++标准的推荐值,但没有强制要求)。
不过不管怎么说,因为多数操作系统都保留内存低64KB的区域是不能访问的,所以你一用这个指针肯定出错。
suzhiwei411
2011-03-18
打赏
举报
回复
那如果我就是要一个指向内存首地址的指针呢?怎么赋值?7楼和2楼的说法不一样,2楼说是分配的,如果是分配的,那么也就是说不同的时候这个空指针指向的地址都不一样吗?7楼说他是指向内存的0地址的
jydjdongjie
2011-03-17
打赏
举报
回复
char *p = 0;确实指向内存的零地址,但是操作系统并没有使用零地址附近的空间,所使指针指向零地址是为了使指针指向一个已知的地方防止成为野指针
jingyangjing
2011-03-17
打赏
举报
回复
空指针不指向任何地方,NULL就是一个空指针值,它是不指向任何一个地方的
严格的来说指针并不是为0的
指向一个内存首地址的指针是
int *p = null;
int a[10]={0};
p = &a;
空指针,是分配地址的,但是没有任何值
wbruce
2011-03-17
打赏
举报
回复
char *p = NULL;
0100138E mov dword ptr [p],0
delphiwcdj
2011-03-17
打赏
举报
回复
空指针用0表示,C语言保证这个值不会是任何对象的地址
delphiwcdj
2011-03-17
打赏
举报
回复
2
空指针是一个特殊的指针值,也是唯一一个对任何指针类型都合法的指针值。指针变量具有空指针值,表示它当时处于闲置状态,没有指向有意义的东西。空指针用0表示,C语言保证这个值不会是任何对象的地址。给指针值赋零则使它不再指向任何有意义的东西。为了提高程序的可读性,标准库定义了一个与0等价的符号常量NULL. 程序里可以写 p = 0; 或者 p = NULL; 两种写法都把p置为空指针值。相对而言,前一种写法更容易使读程序的人意识到这里是一个指针赋值。
ouyh12345
2011-03-17
打赏
举报
回复
或者分配,或者指向一个已有的地址
LinuxBirdMan
2011-03-17
打赏
举报
回复
char a = 'a';
char *str = &a;
C/C++指针经典资料大全
C/C++指针经典资料大全,十余部经典资料书籍,是您精通C指针的理想教程。
C/C++ 指针的13份资料
C/C++ 指针的13份资料 内容丰富,让编程人员不再害怕指针
空指针
NULL
和void指针分析
空指针
NULL
与void指针的注意点
浅谈野指针和
空指针
的区别
文章目录
空指针
野指针
内存
泄露
空指针
没有存储任何的
内存
地址
的指针就称为
空指针
(
NULL
指针)。
空指针
就是被赋值为0的指针,在没有初始化之前,它的值为0。 int *s1 =
NULL
; 野指针 野指针不是
NULL
指针,是指向“垃圾”
内存
(不可用
内存
)的指针。 在计算机中,
内存
的分配由操作系统来管理,要使用
内存
就需要先向操作系统申请。 野指针的
内存
空间是由系统随机分配的,属于非法访问
内存
。 危害 当一个指针称为了野指针,它的指向就是随机的,当你使用了随机
地址
的指针时,危害程度也是随
空指针
:
NULL
还是0
标题:
空指针
:
NULL
还是0
看林锐博士的《高质量C/CPP编程》附录的试卷,对
空指针
的判断居然强制要用
NULL
(如 if(p==
NULL
) ),后来从这篇文章看到一些东西觉得有点意思。不耐烦看的人看我的归纳:
0、0和数值“零”在指针上下文中不是一回事,0就是
空指针
,而不一定是“零”
1、用0还是
NULL
表示
空指针
是风格问题,而不是对与错的问题。
2、
空指针
真的有非零的,多是罕见机器。但此时 0 在指针上下文中会自动转为合适的
空指针
。
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章