0
点赞
收藏
分享

微信扫一扫

C语言动态分配数组

花海书香 2022-02-17 阅读 93

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<stdio.h>

int main()
{
	int length, width, ** array;
	scanf_s("%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_s("%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");
	}
}

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

此方法优点:自然是达到了目的–动态分配数组,无需提前设定一个较大的数组长度来满足使用;缺点:造成了性能上的损耗。

水平有限,如有错误之处请谅解,若有更好的方法或者文中有错误之处,请在下面指正。

举报

相关推荐

0 条评论