相信大家对指针的用法已经很熟了,这里也不多说些定义性的东西了,只说一下指针使用中的注意事项吧。
一.在定义指针的时候注意连续声明多个指针时容易犯的错误,例如int * a,b;这种声明是声明了一个指向int类型变量的指针a和一个int型的变量b,这时候要清醒的记着,而不要混淆成是声明了两个int型指针。
二.要避免使用未初始化的指针。很多运行时错误都是由未初始化的指针导致的,而且这种错误又不能被编译器检查所以很难被发现。这时的解决办法就是尽量在使用指针的时候定义它,如果早定义的化一定要记得初始化,当然初始化时可以直接使用cstdlib中定义的NULL也可以直接赋值为0,这是很好的编程习惯。
三.指针赋值时一定要保证类型匹配,由于指针类型确定指针所指向对象的类型,因此初始化或赋值时必须保证类型匹配,这样才能在指针上执行相应的操作。
四.void * 类型的指针,其实这种形式只是记录了一个地址罢了,如上所说,由于不知道所指向的数据类型是什么所以不能进行相应的操作。其实void * 指针仅仅支持几种有限的操作:1.与另外的指针进行比较,因为void *类型里面就是存的一个地址,所以这点很好理解;2.向函数传递void *指针或从函数返回void *指针,举个例子吧,我们平时常用的库函数qsort中的比较函数cmp(个人习惯于用这个名字)中传递的两个参数就是const
void *类型的,用过的应该很熟了;3.给另一个void * 类型的指针赋值。还是强调一下不能使用void * 指针操纵它所指向的对象。
五.不要将两个指针变量指向同一块动态内存。这个容易引起很严重的问题。如果将两个指针变量指向同一块动态内存,而其中一个生命期结束释放了该动态内存,这个时候就会出现问题,另一个指针所指向的地址虽然被释放了但该指针并不等于NULL,这就是所谓的悬垂指针错误,这种错误很难被察觉,而且非常严重,因为这时该指针的值是随机的,可能指向一个系统内存而导致程序崩溃。但也就是因为值是随机的,所以运行程序时有时正常有时崩溃,这一点要特别注意。
六.在动态delete释放一个指针所指向的内存后注意将该指针置空。
七.在为一个指针再次分配内存之前一定要保证它原先没有指向其他内存,防止出现内存泄漏。解决的办法是我们必须判断该指针是否为空,这时候就显示出第六条的优势,因为如果释放某内存后相应指针不置空的话就不能为其分配新内存了。所以第六条很有必要。
八.虽然程序在退出main函数时会释放所有内存空间,但对于大型程序最好还是某块内存不用了立刻释放,而不要指望系统最后的回收,因为内存泄漏会慢慢消耗系统资源直到内存不足而程序死掉。
九.在用new动态分配完内存之后一定要判断是否分配成功,分配成功后才能使用。
最后提醒两条:任何指针声明后一定要初始化;任何指针用free或delete释放之后一定要置空。
希望大家互相交流学习,本文博客地址: http://blog.csdn.net/iaccepted/article/details/6741600
分享到:
相关推荐
NULL 博文链接:https://448230305.iteye.com/blog/2191121
生死枪战游戏目前以3个模式运行(持续更新),玩家可以通过自己的喜好来选择,如:新手训练营,无限...如果想要更多c++游戏,请进入zzz工作室,网址http://zzz07.ysepan.com/ 我的聊天室网址:https://hack.chat/?zzz
C++资源——实验讲义C++资源——实验讲义
易学C++————潘嘉杰,内容浅显易懂的
不管你是想将已经存在的原生代码应用移植到Android平台上还是准备开始在Android平台上进行软件开发,使用《Android C++高级编程——使用NDK》一书提供的技术可以构建更出色的应用。本书将展示构建性能更好的复杂原生...
C++指针详细解析——史上最精彩指针文章
C++笔记——iNotes
yxy版c++教程 Hash 浅谈哈希算法(csdn)————程序
C++实例——垃圾清理系统
c++游戏——吃豆人(普通版)
C++实例——视频聊天系统
C++实例——考试管理系统
C++实例——KTV点歌系统
c++笔记,很不错的哦,喜欢大家喜欢!。。。。。。
C++资源——课件及其入门等---一本书--引用的使用
C++课设——图书管理系统,供大家一起共同分享学习。
算法(c++)——地图着色问题
c++11 智能指针(csdn)————程序
Visual C++ 新起点——6.0 实用教程