1.动态多维数组的创建
动态多维数组的创建可以节约空间, 避免不必要的空间浪费。
例子:
用C语言创建一个二维数组
// 用数组指针
//方法一
char (*a)[N];//指向一个含有N个元素的一维数组的指针
a = (char (*)[N])malloc(sizeof(char [N]) * m); // 给指针扩容
free(a);
//方法二
char **a;
a = (char**)malloc(sizeof(char*) * m);
for(int i = 0; i < m; i++)
a[i] = (char*)malloc(sizeof(int*)*N)
for(int j = 0; j < m; j++)
free(a[i]);
free(a);
方法三
char **a;
a = (char**)malloc(sizeof(char*) * m);
a[0] = (char*)malloc(sizeof(char) * m * n) // 一次性开辟所有空间
for(int i = 1; i < m; i++)
a[i] = a[i - 1] + n;
free(a[0]);
free(a);
//运用指针数组
//方法一
char* a[M];
for(int i = 0; i < M; i++)
a[i] = malloc(sizeof(char) * n);
for(int i = 0; i < M; i++)
free(a[i]);
//方法二
char* a[M];
a[0] = (char*)malloc(sizeof(char) * M * n);
for(int i = 1; i < M; i++)
a[i] = a[i - 1] + n;
free(a[0]);
用C++
//方法一
char (*a)[N];
a = new char[m][N];
delete[] a;
//方法二
cin >> n;
int **a = NULL;
a = new int*[n];
for (int i = 0; i < n; i++)
a[i] = new int[4];
for(int i = 0; i < n; i++)
delete[] a[i];
delete[] a;
//指针数组的内存分配和释放
//方法一
char **a;
a = new char* [m];
a[0] = new char[m * n];//一次性分配所有空间
for(int i=1; i<m; i++)
a[i] = a[i-1] + n;//分配每个指针所指向的数组
delete[] a[0];
delete[] a;
//方法二
char* a[M];//指针的数组
for(int i=0; i<M; i++)
a[i] = new char[n];
for(i=0; i<M; i++)
delete[] a[i];
//方法三
char* a[M];//指针的数组
a[0] = new char[M*n];
for(int i=1; i<M; i++)
a[i] = a[i-1] + n;
delete[] a[0];
如果是三维、四维和二维一样也就一层一层的创建,把房间一个一个填满东西就行。