因为有些标准的C语言在编译之前分配内存时,需要你已经确定好了所有变量的大小
比如你这个,编译的时候还没有进行输入,所以不知道num2多大, 所以没法给arr分配内存,所以报错
#include <stdlib.h> //别忘了头文件
int *arr=(int *)malloc(sizeof(int)*num2);
楼上说的很对,然后如果像这样只能用动态数组
C语言数组初始化是必须是确定的数,不能是变量,如果想动态申请空间,可以这样 int arr=new arr[num2] 但是用完记得释放,因为这是动态在栈上面开辟的内存,用free(arr)