递归、内存的动态分配、指针
2011-11-02 13:28
387 查看
最近写了一些代码,但从编程的角度看,遇到问题最多的就是递归、内存的动态分配以及指针的问题。下面作些简单的理解:
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去删除自己分配的内存。这种方法可以有效地避免内存泄露。
============================================================================================================
相关文章推荐
- C和指针之动态内存分配之编程练习4
- 智能指针模板,要管理动态分配的内存
- 三十二、数组、指针和字符串:动态内存分配和释放
- 关于类静态成员变量指针通过动态分配的内存怎样回收的探讨
- C和指针之动态内存分配常见问题和总结
- 递归 内存分配 指针
- C语言——指针与结构体 内存的动态分配
- C和指针之动态内存分配堆、栈、全局区(静态区)、常量区对比总结学习笔记
- char ** str的使用方法:动态内存分配-------二维指针
- 鸡啄米:C++编程入门系列之三十二(数组、指针和字符串:动态内存分配和释放)
- 关于类静态成员变量指针通过动态分配的内存如何回收的探讨
- C和指针之动态内存分配之(编写calloc函数,函数内部使用malloc函数来获取内存)
- 数据结构基础——指针及动态内存分配(malloc)
- 数据结构基础:指针及动态内存分配(malloc)
- C和指针 (pointers on C)——第十一章:动态内存分配(下)习题
- C++动态分配三级指针的内存与释放
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 动态内存分配和指针
- C语言编程基础-16动态内存分配 二级指针做形参 函数指针
- C和指针之动态内存分配malloc、calloc、realloc简单使用和区别