//C语言中，数组长度必须在创建数组时指定，并且只能是一个常数，不能是变量。一旦定义了一个数组，系统将为它分配一个固定大小的空间，以后不能改变，称为静态数组。但在编程过程中，有时我们所需的内存空间无法预先确定，对于这个问题，用静态数组的办法很难解决。

//动态数组是相对于静态数组而言。静态数组的长度是预先定义好的，在整个程序中，一旦给定大小后就无法改变。而动态数组则不然，它可以随程序需要而重新指定大小。动态数组的内存空间是从堆(heap)上分配(即动态分配)的。是通过执行代码而为其分配存储空间。当程序执行到这些语句时，才为其分配。程序员自己负责释放内存。

//那么，如何创建动态数组，按照需要设置数组大小呢？


#include <stdio.h>
#include <stdlib.h>

int main(){
    int arrLen;  // 数组长度
    int *array;  // 数组指针
    int i;  // 数组下标

    printf("输入数组长度：");
    scanf("%d", &arrLen);
    
    // 动态分配内存空间，如果失败就退出程序
    array = (int*)malloc( arrLen*sizeof(int) );
    if(!array){
        printf("创建数组失败！\n");
        exit(1); 
    }
    // 向内存中写入数据
    for(i=0; i<arrLen; i++){
        array[i] = i+1;
    }
    
    // 循环输出数组元素
    for(i=0; i<arrLen; i++){
        printf("%d  ", array[i]);
    }
    
    printf("\n");
    free(array); 
    
    system("pause");
    return 0;
}

//运行结果：
//输入数组长度：10
//1 2 3 4 5 6 7 8 9 10
