2014-09-06 105 views
2

经过一番思考。静态概念相当于通过参考概念

在变量的情况下的静态关键字提供所述可变与甚至后调用的函数是结束

虽然通过由参考,存储器中的静态位置意味着你将指针传递给函数,因此变量在函数结束后仍然在内存中为

这是正确还是有其他差异我没注意到?

+0

一个区别是,您传递给被调用函数的地址的变量可以具有“自动”或“静态”存储。 – 2014-09-06 08:48:52

+0

@ Don'tYouWorryChild我没有明白! – 2014-09-06 08:52:49

+0

关于“静态”,它根据上下文而有所不同。例如,函数本地'static'变量与文件全局'static'变量的行为不同。而C没有传递引用语义。 – 2014-09-06 09:34:22

回答

1

区别在于,static变量对函数是私有的。它不能从外部进行修改,所以该函数可以使用static变量来保存通话之间的一些内部状态。来电者无法控制static变量。

当您通过引用传递某个东西时,调用者决定要传递哪个对象。每次调用该函数时,它可能都是不同的。然而,该函数不能控制该对象,除了可以在单次调用期间修改该对象。它尤其不能控制参考传递对象的生命周期;这完全取决于呼叫者。因此,引用的传递对象要么是用于

  • 避免大量对象

  • 返回的第二值(该函数初始化的对象)

  • 用于面向对象的编程

    的副本

最后一点与保存static变量中的内部状态最接近,但它允许调用者使用任意数量的不同对象,而static变量保证只有一个。

+0

谢谢,非常好! – 2014-09-06 09:12:39