代码如下:
/*
本例用于测试C语言实现二维数组的创建、输出和内存释放
结论:二维数组只适合数组元素个数确定的情况,如果元素个数不确定,最好是用链表。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
// 创建并初始化二维数组
char** get2DArray(int n)
{
int i = 0;
char temp[256] = {0};
char **p = malloc(sizeof(char*) * n);
for(i = 0; i < n; i++)
{
p[i] = malloc(256);
sprintf(temp, "hello%d", i);
strcpy(p[i], temp);
}
return p;
}
// 输出(显示)二维数组
void display2DArray(char *p[], int n)
{
int i;
if(p != NULL)
{
for(i = 0; i < n; i++)
{
printf("p[%d]=%s\n", i, p[i]);
}
}
}
// 释放二维数组
void free2DArray(char *p[], int n)
{
int i;
if(p != NULL)
{
for(i = 0; i < n; i++)
{
if(p[i] != NULL)
free(p[i]);
}
free(p);
}
}
void main()
{
char **p = get2DArray(N);
display2DArray(p, N);
free2DArray(p, N);
}
结论:
1. 二维数组只适合数组元素个数确定的情况,如果元素个数不确定,最好是用链表。
2. 如果是C++的话,最好自己封装一个类,在类里实现动态内存空间的管理。