C中如何用前一个输入控制后面的输入

来源:百度知道 编辑:UC知道 时间:2024/09/20 17:34:59
程序如下:
main()
{int i,j,t;
float k[10][10];
printf("Please input t(t<10):\n");
scanf("%d",&t);
printf("please input k:\n");
for(i=0;i<=t;i++)
for(j=0;j<=t;j++)
scanf("%f",&k[i][j]);
.......
}
这个是可以运行,但是当把k数组元素扩为[125][125]时,就运行不了,改成[255][255]时,提示K数组过大。是内存不足?怎么说我也是512的啊。
谢谢一楼的朋友,上面的是可以运行,是我提问前没试验这个改小了的程序。

把k放到全局变量就可以了,就是放到main函数外面,main的上面

局部变量对于静态分配的变量空间大小限制比较小,不同编译器会有所不同,一般需要较大容量的数组,要么就定义成全局变量,要么就采用动态申请内存

不知道楼主学过malloc这个函数没?就是动态申请内存空间,由程序员申请,也要由程序员来翻放,否则会造成内存泄露

顺便说说动态申请二维数组空间的方法吧
int row=300; //要申请的二维数组行数
int col=200; //要申请的二维数组列数
int **k;
int i;
k=(int**)malloc(row*sizeof(int*));
for (i=0; i<row; i++)
k[i]=(int*)malloc(col*sizeof(int));
//对二维数组像平时那样使用就OK了,k[0][2]之类
//程序结束之前,要对空间人工释放,如下
for (i=0; i<row; i++) free(k[i]);
free(k);

怎么感觉有点像 动态数组?

动态分配,容易出现问题。