C语言自己规定数组长度并输入元素 之前知道两种方法 一个是动态malloc;另一个是规定一个很长的数组 但是我没用动态也可以设置任意长度 这是为什么?


    int X;
    int a[X];
    printf("Enter the number of array:");
    scanf("%d",&X);
    for(int i=0;i<X;i++){
        printf("Enter %d value:",i);
        scanf("%d",&a[i]);
    }

这个是可以运行并且没有问题(目前没遇到)

其实电脑开机后物理内存的每个字节中都有值且都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。


c++可以用
int *a=new int[X];退出程序前delete[] a; 
或者用
vector<int> a(X);