C语言实现二维数组操作--元素个数确定

代码如下:

/*

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

你可能感兴趣的:(二维数组)