递归 内存分配 指针
2012-10-20 22:41
183 查看
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去删除自己分配的内存。这种方法可以有效地避免内存泄露。
最近写了一些代码,但从编程的角度看,遇到问题最多的就是递归、内存的动态分配以及指针的问题。下面作些简单的理解:
1、递归
这块内容是我比较薄弱的一块,谈下个人简单的理解,希望有人给予一些建议。
首先,从递归的种类来说,可以分为四块:
a)定义是递归的,如 n!=n*(n-1)!或1等;
b)数据结构是递归的,如链表、树等;
c)问题的解法是递归的,如汉诺塔等;
d)回溯法或试探法可以选用递归法,如求解迷宫问题、图的深度优先遍历等。
其次,第四块内容,也可以选择借助栈进行解决,但是用递归的方法更方便,也更容易理解。第四块内容,也可以归结到第三块内容,但是,其非常经典,所以就把他单独列出。
关于第三块内容,重要的是对问题的分析要透彻,到底可以不可以用分治法,递归能不能求出所有的解。
2、内存的动态分配、指针
c++中的内存动态分配是由操作符new和delete来完成的。用了很久,最近才发现,他们俩个亲兄弟对c++的贡献有多大。大家也看到了,我把内存的动态分配和指针放在一个地方来讲,因为二者之所以强大,是和他们一起使用离不开的。
new一个对象,对象无论是全局变量还是局部变量,只要保存了对象的指针,并且未用delete删除该对象(当然更不能用其他方法删除),那么,在任何地方,都可以用该对象指针访问该对象;这样只需要操作对象指针就可以达到操作对象的目的,从而避免了传递对象、修改对象等操作产生的问题。但是要注意指针的使用,如果指针作为形参,并且在函数内部需要修改指针,那么该指针就要按引用的方式调用指针,否则,无法真正的修改指针。
delete一个对象,系统就会自动调用该对象的析构函数,所以只需要在对象的析构函数中删除分配的内存即可,而不需要自己用free去删除自己分配的内存。这种方法可以有效地避免内存泄露。
相关文章推荐
- 递归、内存的动态分配、指针
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- Delphi 的内存操作函数(3): 给结构体指针分配内存
- [笔记]dotNET内存的分配、指针
- C语言 内存分配 地址 指针 数组 参数 实例解析
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- C和指针 (pointers on C)——第十一章:动态内存分配(下)习题
- 给结构体指针分配内存后依然出现段错误的解决
- 内存分配、野指针、指针、数组相关
- 内存分配详解、指针与数组[C++][内存管理]
- c语言—指针基础(7:静态分配内存)
- 内存分配详解、指针与数组[C++][内存管理]
- 无废话之指针研究二 内存分配与管理
- 为多级指针分配内存
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 指针做形参做局部变量以及内存分配
- 指针部分释疑之二:内存的分配及内存错误类型
- 未分配内存指针作为函数参数问题
- 学点 C 语言(23): 数据类型 - 给指针分配内存
- 指向指针的指针(**)做为参数时,内存分配问题探索