【发布时间】:2014-10-26 19:15:34
【问题描述】:
就像每个函数都放在一个堆栈帧上执行,并在完成后刷新。因此,任何局部变量都不能用于其他函数。但是我们如何才能将局部变量返回给调用者呢?
int pickMin( int x, int y, int z ) {
int min = x ;
if ( y < min )
min = y ;
if ( z < min )
min = z ;
return min ; }
上面的代码工作正常。然而,在下面的代码中,编译器确实给出了一条警告消息——“warning: function returns address of local variable [-Wreturn-local-addr] return a;”,但它在最后打印了一个垃圾值,我认为这很好,因为变量已经被刷新了。但是为什么在 ABOVE 程序中没有发生这种情况?!我的意思是,它也应该返回一个垃圾值。此外,我知道下面代码中的问题可以使用malloc 解决,然后返回该值。 :)
int *returnarray(){
int a[10]; int i;
for(i=0;i<10;++i){
a[i] = i;
}return a;}
【问题讨论】:
-
请修正你的缩进。