递归 内存分配 指针

http://blog.csdn.net/changbaolong/article/details/6928140

最近写了一些代码,但从编程的角度看,遇到问题最多的就是递归、内存的动态分配以及指针的问题。下面作些简单的理解:

1、递归

这块内容是我比较薄弱的一块,谈下个人简单的理解,希望有人给予一些建议。

   首先,从递归的种类来说,可以分为四块:

       a)定义是递归的,如 n!=n*(n-1)!或1等;

       b)数据结构是递归的,如链表、树等;

       c)问题的解法是递归的,如汉诺塔等;

       d)回溯法或试探法可以选用递归法,如求解迷宫问题、图的深度优先遍历等。

   其次,第四块内容,也可以选择借助栈进行解决,但是用递归的方法更方便,也更容易理解。第四块内容,也可以归结到第三块内容,但是,其非常经典,所以就把他单独列出。

   关于第三块内容,重要的是对问题的分析要透彻,到底可以不可以用分治法,递归能不能求出所有的解。

2、内存的动态分配、指针

   c++中的内存动态分配是由操作符new和delete来完成的。用了很久,最近才发现,他们俩个亲兄弟对c++的贡献有多大。大家也看到了,我把内存的动态分配和指针放在一个地方来讲,因为二者之所以强大,是和他们一起使用离不开的。

   new一个对象,对象无论是全局变量还是局部变量,只要保存了对象的指针,并且未用delete删除该对象(当然更不能用其他方法删除),那么,在任何地方,都可以用该对象指针访问该对象;这样只需要操作对象指针就可以达到操作对象的目的,从而避免了传递对象、修改对象等操作产生的问题。但是要注意指针的使用,如果指针作为形参,并且在函数内部需要修改指针,那么该指针就要按引用的方式调用指针,否则,无法真正的修改指针。

   delete一个对象,系统就会自动调用该对象的析构函数,所以只需要在对象的析构函数中删除分配的内存即可,而不需要自己用free去删除自己分配的内存。这种方法可以有效地避免内存泄露。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值