【发布时间】:2009-07-07 12:04:03
【问题描述】:
控制权从函数返回后,变量占用的空间不会被释放吗??
我以为它被释放了。
在这里,我编写了一个函数,即使在从函数 CoinDenom 返回一个数组的本地引用后,它也能正常工作,使用它来打印确定总和所需的最小硬币数量的结果。 如果空间被释放,它如何打印正确的答案?
int* CoinDenom(int CoinVal[],int NumCoins,int Sum) {
int min[Sum+1];
int i,j;
min[0]=0;
for(i=1;i<=Sum;i++) {
min[i]=INT_MAX;
}
for(i=1;i<=Sum;i++) {
for(j=0;j< NumCoins;j++) {
if(CoinVal[j]<=i && min[i-CoinVal[j]]+1<min[i]) {
min[i]=min[i-CoinVal[j]]+1;
}
}
}
return min; //returning address of a local array
}
int main() {
int Coins[50],Num,Sum,*min;
cout<<"Enter Sum:";
cin>>Sum;
cout<<"Enter Number of coins :";
cin>>Num;
cout<<"Enter Values";
for(int i=0;i<Num;i++) {
cin>>Coins[i];
}
min=CoinDenom(Coins,Num,Sum);
cout<<"Min Coins required are:"<< min[Sum];
return 0;
}
【问题讨论】: