关闭

了解内存与数据结构的关系(二)。。。

985人阅读 评论(0) 收藏 举报

  对于内存还是存在很多的疑惑,对这个概念的使用还是不自然,我以前很少关注内存问题的。最近百度,原来内存中有那么多的学问。我想,了解了内存的概念,就应该了解了指针,理解起数据结构也应该会容易得多。

   任意一个程序的运行或数据的存储都是在内存中进行的吗? 在一般的函数中,变量和对象的内存分配都是编译器在编译时安排好了的,这带来了极大的不方便。如数组大开小用,指针必须指向一个已经存在的变量或对象。但是什么时候需要自己动手分配内存呢?(这个就是动态内存分配的问题) 一般函数中定义的变量,在函数运行结束时内存会自动释放掉的。所以我们不用太关心。

静态存储分配:通常定义变量或对象,编译器在编译时就可以根据变量或对象的类型知道所需内存空间的大小(所以声明变量或对象的类型是很重要的!),从而系统在适当的时候为他们分配确定的内存。

动态存储分配:有些操作对象(到底是哪些确定的对象呢?这里应该能回答什么时候需要开动态内存吧!)在程序运行时才能确定(知道编译和运行是分开来操作了吧!),这样编译器在编译时就无法给他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配。所有动态存储分配都在堆中进行。

1。new int(0)  是分配一个int类型的空间,并把其值初始化为零。

2。指针对应着数据在内存中的地址,得到了指针就可以修改该数据了。

3。引用和指针的一个重要区别:使用的时候要分参数传值和变量两种情况。参数传递的时候,指针是值传递,引用是地址传递。变量的时候,引用是个别名,可以理解为具有约束条件的指针,还有能否初始化和是否为空的区别。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:240423次
    • 积分:3402
    • 等级:
    • 排名:第9838名
    • 原创:95篇
    • 转载:29篇
    • 译文:5篇
    • 评论:52条
    最新评论
    课题相关...