我有以下代码:
<script>
$(document).on('click','.dropdown-menu li > a',function(){
var value=$(this).html();
$(this).parent().parent().parent().find('.dropdown_text').html(value);
});
</script>
调用func它没问题,因为当p是本地时* p是i,而我居住在全局范围内(?)。 调用func2返回0,这对我来说没有意义,我希望有一个分段错误,因为v是一个本地向量... 调用func3会返回正确的值,这也没有意义,原因与上面相同。 调用func4最终做了我预期的给出segatioun错误
有人可以帮我理解深层发生的事情吗?为什么向量和数组工作,因为它们被声明为静态?事实上,考虑到所有函数都返回引用,我预计会出现分段错误,因为向量和数组是本地对象,一旦函数结束就应该删除它们。
非常感谢
答案 0 :(得分:5)
那里发生了未定义的行为。通过引用返回本地参数或变量是未定义的行为,与向其返回地址的方式相同。
答案 1 :(得分:1)
如果您希望或必须返回引用,请使用静态变量:
int& my_func(int variable)
{
static int some_value = 0;
some_value = variable;
return some_value;
}
关键字static
告诉编译器该变量在执行后离开函数时将具有生命周期。
要返回引用,您需要将引用到一个变量,该变量在执行后不会消失。