C语言动态分配数组

C语言不能通过定义一个变量通过输入来动态分配数组,如下代码:

int n,array[n];
scanf("%d",&n);

但是在一些实际问题中无法提前知道所需要的数组长度,需要动态分配数组,可以通过molloc函数来实现动态分配数组,如下代码:

int length, *array;
scanf("%d", &length);

array = (int*) malloc (length * sizeof(int));

for(int i = 0; i < length; i++)
{
     scanf("%d", &array[i]);
}

二维数组同理(利用二重指针),下为动态分配二维数组代码:

#include

int main()
{
	int length, width, ** array;
	scanf("%d %d", &length, &width);

	array = (int**)malloc(length * sizeof(int*));

	for (int i = 0; i < length; i++)
	{
		array[i] = malloc(width * sizeof(int));
		for(int j=0; j<width; j++)
		scanf("%d", &array[i][j]);
	}

	for (int i = 0; i < length; i++)//验证array数组
	{
		for (int j = 0; j < width; j++)
			printf("\t%d", array[i][j]);
		printf("\n");
	}
}

多维数组都可利用此方法来动态分配,但是二维以上的数组应该尽可能少的使用,避免混乱。

此方法优点:节省空间;
缺点:造成了性能上的损耗。

你可能感兴趣的:(C语言,c语言,开发语言,后端)