可能重复:
可以在其范围之外访问局部变量的内存吗?
double* weird( double a, double b )
{
double c;
c = pow( a + b, 0.5 );
return &c;
}
对于你们中的大多数人来说,这可能是微不足道的,但我看不出这里会出现什么问题。
可能重复:
可以在其范围之外访问局部变量的内存吗?
double* weird( double a, double b )
{
double c;
c = pow( a + b, 0.5 );
return &c;
}
对于你们中的大多数人来说,这可能是微不足道的,但我看不出这里会出现什么问题。
这是非常错误的,因为您正在返回一个指向局部变量的指针。
&c
返回时,作用域为函数的变量将c
被weird
销毁,从而为您提供指向内存中随机区域的指针。这是未定义的行为。
您在函数范围内声明了一个局部变量c
,该变量在退出函数后不再有效,因此指向该变量的指针在之后没有任何意义。
正如其他人所说。
static
除了在方法中或花括号之间声明的变量之外,变量{}
具有局部范围。一旦你离开它,变量就会被销毁。
如果您仍然想要它,请使用静态
static double c;