我在C:
中有这个功能static Node* newNode(void* e){
Node n={e,NULL,NULL};
return &n;
}
在编译时,我得到以下警告,我想了解它为什么会发生:
warning: function returns address of local variable [enabled by default]
这背后隐藏着什么样的危险?
谢谢
答案 0 :(得分:5)
从函数返回时会破坏局部变量。返回函数后访问它们是未定义的行为,不要这样做。
答案 1 :(得分:0)
警告是因为变量的范围是函数的局部范围 - 一旦返回函数,该变量不再在范围内,并且它的值是未定义的。