c语言定义大数组问题,当定义一百万大的数组时,定义在main里面和定义在main上面有什么区别?为什么会这样

#include<stdio.h>#include<math.h>#include<string.h>//#defineN1000000//intp[N];如果将一百万定... #include<stdio.h>
#include<math.h>
#include<string.h>
// #define N 1000000
// int p[N];如果将一百万定义在这里就没有出错

int main(){
long i,j;
int N= 1000000; //将一百万定义在这里,会出错的
int p[1000000];
int count=0,n;
for(i=0;i<N;i++) p[i]=-1;
p[1]=0;
for(i=2;i<N;i++){

if(p[i]==-1){
count++;
for(j=i;j<N;j+=i){
p[j]=count;
}
}
}
while(scanf("%d",&n)!=EOF){
printf("%d\n",p[n]);

}
return 1;
}
各位哥,看题目,不要看下面的注释,我想问的是在main里面定义一百万的数组为什么会溢出,而在main上面定义则不会!
展开
 我来答
1039447750
2011-07-25 · TA获得超过201个赞
知道答主
回答量:47
采纳率:0%
帮助的人:48.7万
展开全部
数组定义在哪里并不重要,重要的是数组的定义时的容量必须是常量表达式,不能使用变量,因为数组大小一旦被划定就无法动态的改变,所用你用define定义的是常量,那是正确的,而用int定义的是变量,那是不正确的
wy78901234
推荐于2017-12-16 · 超过26用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:65.9万
展开全部
别胡扯了。。。
是空间溢出
在主函数(main)内无法定义那么大的变量空间
所以在main里不能定义一个一百万元素的数组。
楼主的问题与define n和int n无关。
不过楼上说的正确 。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ll274375818
2011-07-25 · TA获得超过294个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:242万
展开全部
int是由范围的,所以N不能为1000000,你上面的是定义100000个元素,每个元素为int所以没错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xl1991212
2011-07-25 · 超过12用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:39.8万
展开全部
一个是 int一个1000000 一个是定义1000000个int
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a909002881
2011-08-06 · TA获得超过2482个赞
知道小有建树答主
回答量:915
采纳率:0%
帮助的人:457万
展开全部
在main内无法定义那么大的变量空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式