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