数组的好处大家都知道,但缺点也很明显,即不能动态改变大小。如果想获得动态改变大小的特性,一般在程序中采用链表的方式来实现。数组和链表满足了我们大多数的应用需求。但也有时候,我们想利用数组能快速查找的特点而不希望用链表,但是数组在每次使用的时候,大小又是变化的。今天1000,明天可能就是10000了。因此,就需要创建动态数组,在c语言中,这是可以实现的,主要涉及到malloc()函数,即动态分配内存操作。
下面是我自己写得一段代码,能完成基本的功能:每次输入数组的长度,然后输入相应的数据,就可以以数组形式保持内容了。
写得比较简略,有的地方也不严谨,今天放到这里,希望大家帮我找找错误,这样做是否是安全的?比如在内存使用方面?希望得到大家的指导。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void show(int *p, int n){
int i;
for(i=0;i<n;i++)
printf("%d\n",*(p+i));
}
main(){
int *my_array,num;
printf("input the length of your danymic array!\n");
scanf("%d",&num);
printf("input %d numbers \n",num);
my_array = (int *)malloc((num+1)*sizeof(int));
int i;
for(i=0;i<num;i++)
{
scanf("%d",&my_array[i]);
}
printf("%d numbers have been added!\n",num);
show(my_array,num);
free(my_array);
my_array=NULL;
}