A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 闪电侠 中级黑马   /  2015-7-6 22:32  /  1362 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们知道如下语句会出现野指针错误,因为指针变量p并没有初始化,它指向内存中一个未知的地址:
  1. int *p;
  2. int a = 10;
  3. *p = a;
复制代码



但是,为什么将p初始化为NULL后,也会出现野指针错误呢???
  1. int *p = NULL;
  2. int a = 10;
  3. *p = a;
复制代码

按理来说p此时有个地址了,虽然是0,但并没有指向未知区域,顶多编译器警告,可事实上却报野指针错误。。。

5 个回复

倒序浏览
*p = &a
回复 使用道具 举报
指针初始化第一种     int *p ;     int a ;      p=&a ;
第二种    int a ;      int *p=&a  ;
野指针就是你们给指针赋值,指针的值是任意的垃圾值。
回复 使用道具 举报
null是空的意思,指针没有明确指向,自然是野指针了
回复 使用道具 举报
null是空的意思,指针没有明确指向,自然是野指针了
回复 使用道具 举报
应该是p=&a;吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马