- 5
- 0
- 约1.17万字
- 约 85页
- 2016-11-29 发布于河南
- 举报
C(C)基础及提高
我们知道,在堆栈上分配的变量初始值是不确定的,也就是说指针p所指向的内存地址是不确定的,后面用*p访问不确定的地址就会导致不确定的后果,如果导致段错误还比较容易改正,如果意外改写了数据而导致随后的运行中出错,就很难找到错误原因了。像这种指向不确定地址的指针称为“野指针”(Unbound Pointer),为避免出现野指针,在定义指针变量时就应该给它明确的初值,或者把它初始化为NULL: int main(void) { int *p = NULL; ... *p = 0; . .. } NULL在C标准库的头文件stddef.h中定义: #define NULL ((void *)0) 就是把地址0转换成指针类型,称为空指针,它的特殊之处在于,操作系统不会把任何数据保存在地址0及其附近,也不会把地址0~0xfff的页面映射到物理内存,所以任何对地址0的访问都会立刻导致段错误。 *p = 0;会导致段错误,就像放在眼前的炸弹一样很容易找到,相比之下,野指针的错误就像埋下地雷一样,更难发现和排除,这次走过去没事,下次走过去就有事。 void *类型:在编程时经常需要一种通用指针,可以转换为任意其它类型的指针,任意其它类型的指针也可以转换为通用指针,最初C语言没有void *类型
您可能关注的文档
最近下载
- 四川省泸州市2024-2025学年八年级下学期6月期末英语试题(含答案,无听力).docx VIP
- 深度解析(2026)《GBT 11748-2023激光治疗设备 二氧化碳激光治疗机》.pptx VIP
- 河南省中联玻璃有限责任公司行业竞争力评级分析报告(2023版).pdf
- 教育学原理(第二版):人的全面发展教育PPT教学课件.pptx
- 中考语文一轮复习:记叙文阅读分析《文章标题的含义和作用》课件.pptx VIP
- 基于协同过滤的音乐推荐系统.doc VIP
- 宁名校联盟2025-2026学年高三语文下学期4月模拟试题文言文详解:《孟尝君列传》 、王安石《读孟尝君传》.docx VIP
- 数学分析(4版)-华东师范大学第3章函数极限.ppt VIP
- 电气控制与PLC应用技术全套课件.pptx VIP
- 成都辅警面试题目及答案.doc VIP
原创力文档

文档评论(0)