C语言,我想算出一个数有多少位数,以这位数创建新的数组报错

img


我想算出一个数有多少位数,以这位数创建新的数组却发现报错了,错误说num2的值不可用做常量,但是我已经把num2的只算出来了,为什么还报错呢?

因为有些标准的C语言在编译之前分配内存时,需要你已经确定好了所有变量的大小
比如你这个,编译的时候还没有进行输入,所以不知道num2多大, 所以没法给arr分配内存,所以报错

  • 如果是平时练习,可以直接把arr定义得大一点
  • 但是如果你只想给它分配那么大,就需要使用malloc动态分配内存的办法
    参考:
#include <stdlib.h>   //别忘了头文件
int *arr=(int *)malloc(sizeof(int)*num2);

img

楼上说的很对,然后如果像这样只能用动态数组

C语言数组初始化是必须是确定的数,不能是变量,如果想动态申请空间,可以这样 int arr=new arr[num2] 但是用完记得释放,因为这是动态在栈上面开辟的内存,用free(arr)