c语言问题。我想声明一个超大的二维数组——a[1000][1000],如何实现?

如题所述

直接定义 int a[1000][1000];变量存放在栈里,这个要看编译的时候栈的大小。
如果栈空间不够大,可以通过new实现。
int **a = new int *[1000];
for(int i=0;i<1000;i++){
a[i] = new int[1000];

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-09
声明跟大小没有关系
直接 extern int a[1000][1000];
定义的话不要把这个数组放到{}里面
例如
int a[1000][1000];
int main()
{
.........
}
第2个回答  2018-01-31
直接定义 int a[1000][1000];变量存放在栈里,这个要看编译的时候栈的大小。
如果栈空间不够大,可以通过new实现。
int **a = new int *[1000];
for(int i=0;i<1000;i++){
a[i] = new int[1000];

}
第3个回答  2013-11-09
不算大,直接写int a[1000][1000];就可以了。连2000个整数都不能处理的话还能称得上计算机?
对对对,我太大意了。动态申请内存,放在堆上去,那里很大,完全可以胜任你的需求。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "stdlib.h"
void main(void){
int **p,i,x;
if((p=(int **)malloc(sizeof(int *)*1000))==NULL){
printf("Apply for level 1 pointer memory failure...\n");
exit(0);
}
for(i=0;i<1000;i++)
if((*(p+i)=(int *)malloc(sizeof(int)*1000))==NULL){
printf("Application data memory failure...\n");
exit(0);
}
for(x=i=0;i<1000;i++){//这里操作对角线,看看是否成功.
p[i][i]=x++;
printf("%d ",p[i][i]);
}
delete []p;
printf("\n");
}本回答被提问者采纳

...问题。我想声明一个超大的二维数组——a[1000][1000],如何实现?
直接定义 int a[1000][1000];变量存放在栈里,这个要看编译的时候栈的大小。如果栈空间不够大,可以通过new实现。int **a = new int *[1000];for(int i=0;i<1000;i++){ a[i] = new int[1000];}

如何用c语言实现二维数组?
使用 C 语言实现二维数组可以通过以下步骤:1. 声明一个二维数组变量:首先,需要声明一个二维数组变量来存储数据。声明二维数组需要指定数组的行数和列数,并可以给数组命名。2. 初始化二维数组:可以选择在声明二维数组时初始化,或者在后续的代码中初始化数组。可以使用循环结构来遍历数组的每个元素,并...

c语言中一个整数(int)二维数组可以设置最多多少行跟多少列
想开大的数组,可以用动态分配。定态数组,作为全局量可以开得大。例如:include <stdio.h> int a[1001][1001]; \/\/ 全局量 main(){ a[1000][1000]=1000;printf("%d",a[1000][1000]);return 0;} 若放到 main(){} 里,就是局部量,就不能用这么多单元了。

c语言关于定义二维数组的问题
在C语言中,二维数组可以视为一个表格或者矩阵。你可以通过指定数组的行数和列数来定义它。例如,定义一个有3行4列的二维数组可以写作:`int array[3][4];`。这表示数组名为`array`,包含3行和4列,总共可以存储12个整数。你也可以在定义时初始化数组的值,如:`int array[3][4] = {{1, ...

C语言实现一个可变长的二维数组
printf("请输入第%d行元素的个数:",i);scanf("%d",&n[i-1]);printf("\\n");int q=n[i-1];p[i-1]=new int[q];for (int j=0;j<n[i-1];j++){ p[i-1][j]=1;} } for (int x=0;x<a;x++){ for (int y=0;y<n[x];y++){ printf("%d",p[x][y]);} pr...

急急!!!如何用c语言输入和输出一个二维数组??
include <stdio.h> include <stdlib.h> int main(){ int a[2][2];int i,j;for (i=0;i<2;i++){ for (j=0;j<2;j++){ scanf("%d ",&a[i][j]);} } for(i=0;i<2;i++)for(j=0;j<2;j++)printf("%d",a[i][j]);return 0;} 运行成功 ...

c语言如何给一个二维数组求每一行的方差?
void main(){ double a[2][1000],vx=0,vy=0,varx,vary,ax=0,ay=0;int i,n;scanf("%d",&n);\/\/n是整型,所以用%d for(i=0;i<=n-1;i++){ scanf("%lf",&a[0][i]);\/\/数组起始为0,不是1 scanf("%lf",&a[1][i]);ax+=a[0][i];\/\/求和 ay+=a[1][i];} a...

C语言二维数组问题
译器像Turbo C类型检查不严格,可能会用过 int* p=a[0]; \/\/这个合法,但不符合你的意图,比如你要访问a[1][1],用p的话就只能是p[5],而不能是p[1][1] ,这个指针p把a当作一个有12个元素的1维数组了,而不是3行4列的矩阵 正确的做法是 int (*p)[4]=a;要用一个指针来引用数组...

c语言数组大小的问题?
C语言中第一维大小是指数组第一维的长度:如下定义一个一维数组:int arr[10];则其长度可以使用sizeof(arr)来求得:printf("长度:%d",sizeof(arr));其结果为:10 二维数组的第一维大小是指数组的行数,第二维是数组的列数:定义一个二维数组:int arr[5][8];则其行数为5,列数为8,其...

c语言二维数组允许定义的最大值
你定义多大就会申请多大的内存,所以这个错误主要看你的机器的内存大小以及编译器允许的内存大小,一般机器char的最大范围在10^7左右int在10^6左右,你是10^8级别太大了 如果用超级计算机就是非常大也没有问题的。二维数组没有定义的最大值的限制,主要是内存限制 ...

相似回答