数组长度随数组元素改变,不会溢出,不会浪费资。
下面的代码实现了简单的动态数组:
问题及代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
//从控制台获取数组数值大小;
int N;
int *a;
int i;
printf("Input array length: ");
scanf("%d",&N);
//分配空间;
a=(int*)calloc(N,sizeof(int));
//控制循环填充数据;
for(i=0;i<N;i++)
{
a[i]=i+1;
printf("%-5d",a[i]);
if((i+1)%10==0)
{
printf("\n");
}
}
//释放内存
free(a);
a=NULL;
printf("\n");
return 0;
}
运行结果:
知识总结:
使用void *calloc(size_t n, size_t size);
其功能为:在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;
如果分配不成功,返回NULL。
free()释放内存;
学习心得:
学会了为动态数组分配合适的内存;
在写程序时,不小心在if()内加入了"",导致分行失效。