一、静态数组
静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。
静态数组在内存中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能改变,在函数执行完以后,系统自动销毁;
如:int a[10];
虽然c语言规定,只有静态存储的数组才能初始化,但一般的c编译系统都允许对动态存储的数组赋初值。静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0。《c语言编程设计》p151
二、动态数组
动态数组的长度不是固定的,可以改变,动态数组的内存空间是从堆动态分配的。是通过执行代码而为其分配存储空间。当程序执行到我们编写的分配语句时,才为其分配。使用完必须由程序员自己释放,否则将会引起内存泄露。
创建动态数组要遵循一个原则:从外层往里层,逐层创建;而释放的时候从里层往外层,逐层释放。
1、创建方式
(1)使用malloc函数
所需头文件
stdlib.h
如:
int *p;
p=(int *)malloc(n*sizeof(int))
int n;
int *p;
scanf("%d",n);
p=(int *)malloc(n*sizeof(int))
(2)使用calloc函数
int n1;
int *array;
printf("请输入一维数组的长度:");
scanf("%d",&n1);
array=(int *)calloc(n1,sizeof(int));
2、释放内存
使用void free (void* ptr)函数释放动态地址空间
free(arry);
使用完动态数组以后应释放地址空间,以免占用。