C局部变量地址返回警告

时间:2012-07-01 10:17:37

标签: c warnings local-variables

我在C:

中有这个功能
static Node* newNode(void* e){
Node n={e,NULL,NULL};
return &n;
}

在编译时,我得到以下警告,我想了解它为什么会发生:

warning: function returns address of local variable [enabled by default]

这背后隐藏着什么样的危险?

谢谢

2 个答案:

答案 0 :(得分:5)

从函数返回时会破坏局部变量。返回函数后访问它们是未定义的行为,不要这样做。

答案 1 :(得分:0)

警告是因为变量的范围是函数的局部范围 - 一旦返回函数,该变量不再在范围内,并且它的值是未定义的。