你设置的是静态数组,静态数组的创建非常方便,使用完也无需释放,要引用也简单,但是创建后无法改变其大小是其致命弱点!就是说a[m][n],m,n不能是变量,你平常可能看到过a[m][n]定义数组的,但仔细观察就会发现这个时候都能在上面找到#define m XXX与#define m XXX,这个时候m和n都是固定大小,系统才知道如何分配空间!
LZ的题目,有两种方式解决,
方法一就是定义足够大的数组,再利用两个int型来限制可以使用多少元素,例如设置a[100][100]
而使用的时候保证小标不超过a[5][5],又或者不超过a[10][20],这样就能实现LZ的需要了;
方法二就是使用动态数组,但动态数组就要注意了,对于动态数组,其创建麻烦,使用完必须由程序员自己释放,否则严重会引起内存泄露。不过动态数组使用非常灵活,能根据程序需要动态分配大小。
动态数组的建立依赖于malloc函数,
要包含头文件 #include<malloc.h>
例如:只要int *p,使用时p = (int *)malloc(n*sizeof(int));这就相当于 int p[n];注意了,这里的n就可以使变量了!因为它是可变的,所以称为动态数组!
LZ要使用动态二维数组,可仿照下例:
#include <stdlib.h>纯手打,希望对你有用,亲!