0

可能重复:
可以在其范围之外访问局部变量的内存吗?

double* weird( double a, double b )
{ 
    double c;
    c = pow( a + b, 0.5 );
    return &c;
}

对于你们中的大多数人来说,这可能是微不足道的,但我看不出这里会出现什么问题。

4

3 回答 3

8

这是非常错误的,因为您正在返回一个指向局部变量的指针。

&c返回时,作用域为函数的变量将cweird销毁,从而为您提供指向内存中随机区域的指针。这是未定义的行为

于 2012-10-21T18:41:25.333 回答
2

您在函数范围内声明了一个局部变量c,该变量在退出函数后不再有效,因此指向该变量的指针在之后没有任何意义。

于 2012-10-21T18:41:16.873 回答
0

正如其他人所说。

static除了在方法中或花括号之间声明的变量之外,变量{}具有局部范围。一旦你离开它,变量就会被销毁。

如果您仍然想要它,请使用静态

static double c;
于 2012-10-21T18:49:53.503 回答