经过一番思考。
变量情况下的静态关键字在内存中提供了静态位置的变量,即使在调用的函数结束 < / p>
当通过引用传递时,意味着您正在向函数传递指针,因此在函数结束后,变量在内存中保持。
这是对的还是我没有注意到的其他差异?
答案 0 :(得分:1)
不同之处在于,static
变量对函数是私有的。它不能从外部修改,因此该函数可以使用static
变量来保留调用之间的某些内部状态。调用者无法控制static
变量。
当您通过引用传递某些内容时,调用方决定要传递哪个对象。每次调用函数时它都可以是不同的。但是,该功能无法控制对象,只能在单次调用期间对其进行修改。它尤其无法控制引用传递对象的生命周期;这完全取决于来电者。因此,引用的传递对象要么用于
避免复制大对象
返回第二个值(函数初始化对象)
用于面向对象编程
最后一点最接近保存static
变量中的内部状态,但它允许调用者使用任意数量的不同对象,而static
变量保证只有一个。