指针 概念 与 构建过程 (是代码大全一书中的摘要,努力之后以自己的理解、应用案例来丰富)

组成

每一个指针都包含两部分:内存中的某处位置,以及如何解释该位置的内容。
内存中的位置:就是一个地址,常用16进制形式表示,指针本身只包含这个地址。
指针所指的内容:要使用该地址所存放的内容,即指针所指向的数据,就必须访问该地址,通过对应的指针类型来解释该位置的内存内容。同一组二进制数据,通过不同类型指针来解释,就对应不同的含义。

使用不当引起的错误

指针错误都产生于指针指向了它不该指向的位置。
内存破坏:通过一个坏了的指针变量赋值时,把数据写入了本不该写值的内存区域。
内存破坏的可能后果:1)导致可怕、严重的系统崩溃;2)篡改程序其他部分的计算结果;3)致使程序不可预知地跳过某些子程序;4)什么事情都不做(这种情况也很危险)。

正确使用指针的策略——双向策略(待进一步学习理解)

双向策略:1.避免指针错误;2.检测指针错误。
1.避免的技巧

  • 集中控制的思想:将指针操作限制在子程序或者类里面
  • 同时声明和定义指针
  • 对称分配和释放:在与指针分配相同的作用域中删除指针
  • 用额外的指针变量来提高代码清晰度
  • 简化复杂的指针表达式
  • 用图描述复杂的指针关系
  • 按照正确的顺序删除链表中的指针
  • 粉碎垃圾数据
  • 删除或释放指针后将它们设为空值
  • 尽量采用非指针的技术

2.检测的技巧

  • 在使用指针之前检查指针(通过访问器子程序自动完成)
  • 先检查指针所引用的变量再使用它(通过访问器子程序自动完成)
  • 用狗牌字段来检测损毁的内存
  • 增加明显的冗余
  • 分配一片保留的内存后备区域
  • 在删除变量之前检查非法指针
  • 跟踪指针分配情况
  • 编写覆盖子程序,集中实现避免指针问题的策略

C++指针(待进一步学习理解)

指针和引用的区别
把指针用于“按引用传递”参数,把const引用用于“按值传递”参数(没有拷贝代价的按值传递,不可更改引用的值)
auto_ptr(过去)和shared_ptr(现在)
灵活应用智能指针

[1]《CODE COMPLETE 代码大全2》 13.2
[2]《More Effective C++》“资源管理” “第28条”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值