C语言:静态数组&动态数组

一、静态数组

        静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。

静态数组在内存中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能改变,在函数执行完以后,系统自动销毁;

        如: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);

使用完动态数组以后应释放地址空间,以免占用。

你可能感兴趣的:(C语言,c语言)