空指针(指针变量指向内存编号为0的空间,内存空间为0~255是不可以被访问的)
1.初始化指针为空指针最好的方式:
int *p=nullptr;
2.空指针的作用是:
当不清楚指针应该指向何处时,就把它初始化为nullptr。
3.空指针的注意事项:
- 将变量赋值给空指针的操作是错误的,即便变量值恰好是0也不行。
-
如果对空指针解引用,程序会崩溃。
-
如果对空指针使用 delete 运算符,系统将忽略该操作,不会出现异常。所以,内存被释放后,也应该把指针指向空。
- 在函数中,应该有判断形参是否为空指针的代码,目的是保证程序的健壮性。
1 if(p==nullptr) return;
野指针(指针变量指向的不是一个有效的地址)
- 如果对野指针解引用,程序会崩溃。
- 任何变量都必须初始化之后才能使用,因此当不对指针进行初始化时它是一个野指针,此时还不能对它进行访问。
- 如果用指针指向了动态分配的内存,内存被释放后,指针不会置空,但是,指向的地址已失效。因此指针指向了动态分配的内存,当释放内存时应该这样做:
1 if (p != nullptr) 2 { 3 p = nullptr; // 先置为空,防止其他地方使用即将释放的指针 4 delete tmp; // 再释放指针所指向的内存 5 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)