一 使用指针的一般技巧
错误的使用指针,给一个坏了的指针赋值时,会把数据写入本不该写值的内存区域。这称为内存破坏而更正指针错误的大部分工作量是找出它的位置。
正确地使用指针要求程序员采用一种双向策略。第一,要首先避免造成指针错误。指针错误很难发现,因此采取一些预防性措施是值得的,其次,在编写代码后尽快的找出错误来
二 寻找错误的方法
1 把指针操作限制在子程序或者类里面
2 同时声明和定义指针
3 在使用指针之前检查指针
4 先检查指针所引用的变量再使用它
5 用狗牌字段检测损毁的内存(“标记字段”或者“狗牌”是指你加入结构体内的一个仅仅用于检测错误的字段。在分配一个变量的时候把一个应该保持不变的数值放在它的标记字段里)
6 增加明显的冗余(操作限制在子程序里)
7 用额外的指针变量来提高代码清晰度
8 简化复杂的指针表达式,可以画一个图
9 按照正确的顺序删除链表中的指针
10 分配一片保留的内存后备区域
11 粉碎垃圾数据
12 在删除或者释放指针之后把它们设为空值
13 在删除变量之前检查非法指针
14 跟踪指针分配情况
三 表驱动法
采用查表法可以极大的简化程序,令程序变得逻辑简单,直观易懂
四 对于C++,指针(*)和引用(&)的区别
最重要的区别是引用必须总是引用一个对象,而指针则可以指向空值,而且引用所指向的对象在该引用初始化之后不能改变;把指针用于“按引用传递”参数,把const引用用于“按值传递”参数,C++向子程序传递参数的默认方式是传递值而不是传递引用; 对于不可修改的对象成员引用使用A.a,对于可以修改的对象成员使用A->a;
五 何时使用foreach
Foreach循环或其等价物很适用于对数组或者其他容器的各项元素执行操作
六 一些应该避免的想法
1 代码越短,机器运行速度就越快,占用资源就越少
2 不要认为特定运算可能比其他的快,代码规模会小,要实际去测试
3 不必随时随地进行优化
4 程序的运行速度高效要保证其正确性