静态概念等同于通过引用概念传递

时间:2014-09-06 08:46:09

标签: c static pass-by-reference

经过一番思考。

变量情况下的静态关键字在内存中提供了静态位置的变量,即使在调用的函数结束 < / p>

通过引用传递时,意味着您正在向函数传递指针,因此在函数结束后,变量在内存中保持

这是对的还是我没有注意到的其他差异?

1 个答案:

答案 0 :(得分:1)

不同之处在于,static变量对函数是私有的。它不能从外部修改,因此该函数可以使用static变量来保留调用之间的某些内部状态。调用者无法控制static变量。

当您通过引用传递某些内容时,调用方决定要传递哪个对象。每次调用函数时它都可以是不同的。但是,该功能无法控制对象,只能在单次调用期间对其进行修改。它尤其无法控制引用传递对象的生命周期;这完全取决于来电者。因此,引用的传递对象要么用于

  • 避免复制大对象

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

  • 用于面向对象编程

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