代码如下:
/* 本例用于测试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++的话,最好自己封装一个类,在类里实现动态内存空间的管理。