此功能可能出现哪些错误或不正确?

What could be wrong or incorrect with this function?

本文关键字:错误 不正确 功能      更新时间:2023-10-16

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

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

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

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

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

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

正如其他人所说。

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

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

static double c;