C语言入门教程-指针常见错误
[09-12 13:08:22] 来源:http://www.88dzw.com 电路基础 阅读:8730次
文章摘要:指针常见错误错误 1:未初始化的指针一个最易犯的指针错误是试图引用未初始化(因而指向的是无效地址)的指针。例如: int*p;*p=12;指针p在声明时未初始化,指向的是一个随机的内存地址。它可能指向系统栈、全局变量、程序代码区或操作系统。执行*p=12;时,程序会不加辨别地试图在p指向的随机位置处写入一个12。这时程序有可能立即崩溃,也可能等上半小时然后崩溃,或者程序另一个部分的数据被悄然破坏而您却浑然不知。可见这种错误非常难于排查。请确保指针解引用(取出指针指向的地址中的内容)之前所有的指针已被初始化为指向有效地址。 错误 2:无效指针引用。当指向无效地址的指针仍被引用时即发生无效指针引用
C语言入门教程-指针常见错误,标签:电子电路基础,模拟电路基础,http://www.88dzw.com指针常见错误
错误 1:未初始化的指针
一个最易犯的指针错误是试图引用未初始化(因而指向的是无效地址)的指针。例如:
int*p;
*p=12;
指针p在声明时未初始化,指向的是一个随机的内存地址。它可能指向系统栈、全局变量、程序代码区或操作系统。执行*p=12;时,程序会不加辨别地试图在p指向的随机位置处写入一个12。这时程序有可能立即崩溃,也可能等上半小时然后崩溃,或者程序另一个部分的数据被悄然破坏而您却浑然不知。可见这种错误非常难于排查。请确保指针解引用(取出指针指向的地址中的内容)之前所有的指针已被初始化为指向有效地址。
错误 2:无效指针引用。
当指向无效地址的指针仍被引用时即发生无效指针引用。
导致这类错误的一种可能是当q未初始化时执行p=q;。此时指针p也变为未初始化的。任何对*p的引用即造成无效指针引用。
避免此类错误的惟一途径是用画图的方法记录每个步骤的指针引用情况,并确保全部指针都各有所指。由于和错误1同样的原因,无效指针引用也会导致程序莫名其妙地崩溃。
错误 3:零指针引用
当试图在程序中引用指向零地址的指针时即发生零指针引用。例如,若p是一个整型指针,则下面的代码是无效的:
p=0;
*p=12;
p不指向任何内存块。所以,试图对此内存块的读写即为无效的零指针引用。我们会在后文看到,将指针指向零地址是有充分的正当理由的。然而,对零指针的解引用(取出指针指向的地址中的内容)却是无效的。
所有这些错误,对于一个程序来说都是致命的。要谨防您的程序产生这些错误。最好的方法是为程序的每一步画图记录指针引用情况。
Tag:电路基础,电子电路基础,模拟电路基础,电路基础
- 上一篇:指针作为函数参数
《C语言入门教程-指针常见错误》相关文章
- › C语言入门教程-二进制文件
- › C语言入门教程-打开文本文件
- › C语言入门教程-读取文本文件
- › C语言入门教程-指针
- › C语言入门教程-为什么要用指针?
- › C语言入门教程-指针基础
- 在百度中搜索相关文章:C语言入门教程-指针常见错误
- 在谷歌中搜索相关文章:C语言入门教程-指针常见错误
- 在soso中搜索相关文章:C语言入门教程-指针常见错误
- 在搜狗中搜索相关文章:C语言入门教程-指针常见错误
编辑推荐
分类导航
最新更新
- · 什么是系统仿真
- · 什么是CPCI
- · 英特尔 Parallel Composer入门
- · 什么是支持数据库,什么是中宏数据库
- · 什么是数据交换技术
- · 什么是内部数据传输率
- · 什么是空间数据交换中心
- · 什么是差异备份
- · 什么是备份集
- · 什么是映像备份
热门排行
- · IGBT模块
- · 什么是24脉波整流变压器
- · 自动变速器不能强制降挡故障原因、诊断与排
- · 什么是MD机
- · 中心频率,什么是中心频率
- · 功率单位mw和dbm的换算表
- · 中值滤波模块设计思路
- · 反馈振荡器的原理
- · 气体激光器简介
- · 数制与进位记数法