这个功能可能有什么不对或错误?

时间:2012-10-21 18:39:39

标签: c++

  

可能重复:
  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;
}

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

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

正如其他人所说。

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

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

static double c;