【发布时间】:2014-03-15 15:51:39
【问题描述】:
这样初始化可变大小的对象有什么问题?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int fun(int n,int *dp)
{
dp[1]=0;
int i;
for(i=2;i<=n;i++)
{
dp[i]=1+dp[i-1];
if(i%2==0)dp[i]=min(dp[i],1+dp[i/2]);
if(i%3==0)dp[i]=min(dp[i],1+dp[i/3]);
}
return dp[n];
}
int main()
{
int arr[4]={2,4,1,7};
int i;
for(i=0;i<4;i++)
{
int memo[arr[i]+1]={-1};
//memset(memo,-1,sizeof(memo));
int result=fun(arr[i],memo);
printf("%d\t",result);
}
return 0;
}
错误是:variable-sized objectmemo'可能未初始化`
最初我尝试使用这种初始化方法。但后来使用了 memset()。 有人可以帮我吗.. 谢谢..
【问题讨论】:
-
然后发生了什么?错误?
-
什么是备忘录?请粘贴完整的真实代码
-
可变长度数组不能有初始化器。
-
@lizusek
memo是什么,已经存在了。 -
@m0skit0 错了,在这里查看问题的第一个修订版:stackoverflow.com/revisions/22426045/1
memo的声明一直存在
标签: c initialization