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

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

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

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

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值