生态城美林园均价:如何储存列数未知的二维数组(用C/C++)

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 11:20:24
num[16][N]此类数组该用什么方法定义?
在题目中给出N的值,不想用链表一类的存储方式。
我用子函数:
int pro(int N)
{
char num[16][N];
…………
…………
…………
}

int main()
{
/*在此处给出列数N*/
int width;
scanf("%d",&width);
process(width);
…………
}
可是输到倒数第二个数时,就会报错。说"0x7802745a"指令引用的"0x00000000"内存。该内存不能为"read"。
Windows2000,Dev-C++4.9.9.0。
恳请不吝指教。
先谢谢各位的指教,但是很抱歉,不论按照那一位的解决办法都会报错。
"0x7802745a"指令引用的"0x00000000"内存。该内存不能为"read"。
我的运行环境如下:
Windows2000,Dev-C++4.9.9.0。
可能和一些用VC或TC的朋友不一样,希望各位能再帮帮忙解决一下。

#include <stdio.h>
#include <stdlib.h>

int pro(int N)
{
int ARRAY_SIZE=16*N;
char (*num)[20];
num = (char (*)[20])malloc(ARRAY_SIZE) ;
/*然后就可以num[0][0],num[0][1]...这样使用了*/
…………
…………
…………
/*释放num*/
free(num);
return 0;
}

int main()
{
/*在此处给出列数N*/
int width;
scanf("%d",&width);
pro(width);
…………
return 0;
}

如果你用C++的话
可以考虑用STL的vector嵌套

#include <vector>
using namespace std;

vector<vector<int> > num;

#include <stdio.h>
#include <stdlib.h>

int process(int n)
{
char **num = malloc(16*N*sizeof(char));
...
}

int main()
{
int width;
scanf("%d",&width);
process(width);
return 0;
}

int process(int N)
{
char **a ;
*a=(char **)malloc(16*sizeof(char *));
for (int i=0;i<16;i++)
a[i]=(char *)malloc(N*sizeof(char));
....
}