我有一个计算数字平方的函数。我期望在调用 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
答案 0 :(得分:0)
在下面的函数中,s
是在函数调用堆栈上分配的双精度型。您正在返回该变量的地址。
从函数返回时,该堆栈将展开,导致返回值指向无效内存(又名address of local variable
)
double* sqr(double d)
{
double s = d*d;
return &s;
}