| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 14537 人关注过本帖
标题:二维数组行和列最大可以设置多大?
只看楼主 加入收藏
feitianshu
Rank: 2
等 级:论坛游民
帖 子:14
专家分:31
注 册:2016-10-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
二维数组行和列最大可以设置多大?
设置一个二维数组int a[1000][1000]执行后就会出问题.如果将二维数组定义为char a[1000][1000],就没有问题,这是为什么?例如:
程序代码:
#include <stdio.h>
int main(void)
{

 int a[1000][1000];

 printf("please input  number\n");

 a[0][0]=11;

 printf("%d",a[0][0]);
}

图片附件: 游客没有浏览图片的权限,请 登录注册
2016-11-01 18:22
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

早知做人那么辛苦!  当初不应该下凡
2016-11-01 18:42
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:20 
#include <stdio.h>
int a[1000][1000];  //定义到外面就行了,据说在函数内部的变量都是在栈里,栈的大小根据编译器有不同,一般是1M,好像可人为设置栈的大小,不过我不知道怎么设置
int main(void)
{
 printf("please input  number\n");
 a[0][0]=11;
 printf("%d",a[0][0]);
}
2016-11-01 19:14
feitianshu
Rank: 2
等 级:论坛游民
帖 子:14
专家分:31
注 册:2016-10-18
收藏
得分:0 
回复 3楼 xzlxzlxzl
谢谢
2016-11-01 19:48
yanjunfeng10
Rank: 2
等 级:论坛游民
威 望:1
帖 子:15
专家分:44
注 册:2016-10-27
收藏
得分:0 
从代码上看是没有问题的,主要是你定义了一个4*1000*1000的局部变量,使用这么大栈空间时,可能会有问题。定义成静态变量就不会有问题
2016-11-01 23:22
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
以下是引用yanjunfeng10在2016-11-1 23:22:53的发言:

从代码上看是没有问题的,主要是你定义了一个4*1000*1000的局部变量,使用这么大栈空间时,可能会有问题。定义成静态变量就不会有问题



是动态变量吧

早知做人那么辛苦!  当初不应该下凡
2016-11-02 00:02
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
回复 6楼 炎天
严格地说应该是全局变量和局部变量。局部变量在栈里,随着函数的调用完成而失效,全局变量在程序专有区域,在整个程序生存期都有效,但由于函数体内用static定义的变量也在这一区域,所以这一区域也叫静态存储区,把存在这里的变量也通称为静态变量了。---个人理解,一听到静态变量我就能意会是啥子,反之则是局部变量,很少听到动态变量这一名词。
2016-11-02 10:24
快速回复:二维数组行和列最大可以设置多大?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023565 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved