这个函数返回错误的指针吗?

时间:2019-03-04 00:06:43

标签: c++

我有一个计算数字平方的函数。我期望在调用 return (<>{this.props.notes.map(appendNoteToDiagram))}</>) 时输出9。但是答案是错误的。编译器发出有关sqr(3)的警告,但我无法解读该警告。声明address of local variable returned中的另一个问题是,为什么不像其他double* v1 = sqr(v2)这样的情况那样使用double* v1 = &sqr(v2)

int a=5; int *b=&a

1 个答案:

答案 0 :(得分:0)

在下面的函数中,s是在函数调用堆栈上分配的双精度型。您正在返回该变量的地址。

从函数返回时,该堆栈将展开,导致返回值指向无效内存(又名address of local variable

double* sqr(double d)
{
    double s = d*d;
    return &s;
}