c语言数组定义问题,求解

请问要定义一个未知长度的数组,数组的长度要自己输入确定,,是不是先输入数组长度n,在定义为inta[n],可为什么给我报错了,说不对,求代码谢谢

    #include<stdlib.h>

    int n, *a;
    scanf("%d",&n);
    a=(int *))malloc(n*sizeof(int));//动态申请n个整型元素的数组

    free(a);//用完释放

建议动态分配数组的内存:
char array;
array = (char
)malloc(n);

c语言中定义数组长度是不能够直接使用变量的,除非这个长度变量在之前初始化了,如:
int n=10;
int a[n];
倘若需要使用可变长度的数组,建议使用楼上的malloc

编译器不能分配未知大小的内存,你填n是在运行时才确定其值但编译时编译器就会检查其值,不能确定所以就报错。楼上的有问题,应该是char* 。
char * szAay = null;

new 或者 malloc 都可以

要想自定义数组的大小,只能使用动态内存分配,malloc