为了账号安全,请及时绑定邮箱和手机立即绑定

C++ 关于空指针

C++ 关于空指针

C++
有只小跳蛙 2018-07-29 18:18:18
有int main(){using namespace std;int *p=NULL;cout<<&p<<endl;cout<<p<<endl;return 0;}1、虽然空指针不指向有效数据 但是是有空间来存储空指针的吗、?2、是不是因为空指针不指向有效数据 所以 cout<<*p;是错的呢?、3、cout<<p;输出的是0 代表的是p指向的空间是0吗?
查看完整描述

2 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

空指针的定义和理解:
真正的空指针是说,这个指针没有指向一块有意义的内存,比如说:
char* k;
这里这个k就叫空指针。并未让它指向任意地点。
又或者char* k = NULL
这里这个k也叫空指针,因为它指向NULL也就是0,注意是整数0,不是'\0'。一个空指针我们也无法对它进行取内容操作。空指针只有在真正指向了一块有意义的内存后,我们才能对它取内容。也就是说要这样k = "hello world!";这时k就不是空指针了。

查看完整回答
反对 回复 2018-08-01
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

#include <iostream>

int main() {

    using namespace std;

    int *p = NULL;

    cout << &p << endl; // &p是存放指针p的地址

    cout << p << endl;  // p指向的地址

    cout << *p << endl; // p指向NULL,也就是0,显示地址0单元的内容会出错,原因是该地址不能读/写

    return 0;

}

追问

C++能确保空指针不会指向有效数据么?

追答

指向NULL就是指向“空”,因为地址0不是普通用户所能操作的地址单元,含地址0在内,内存(含ROM)归操作系统所用。


查看完整回答
反对 回复 2018-08-01
  • 2 回答
  • 0 关注
  • 738 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信