问题描述
- 声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么
- 基本上,代码如下:
#include<stdio.h> int main(){ int num = 0; printf(""输入数组长度:""); scanf(""%d""&num); int arr[num]; //编译不报错 //int arr[num] = {0};//编译报错 return 0;}
解决方案
因为C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。
这个简单例子:http://c.biancheng.net/cpp/html/2748.html
解决方案二:
一般来讲,不能这么做的,必须指定数组的大小。但是测试中发现,堆栈中的数组大小,的确是在运行的时候确定的。
解决方案三:
为什么赋值会报错呢,因为编译的时候编译器只知道你申请的是num(0)个啊,而你输入的时候那是运行时,编译器在编译的时候会有检查,结果发现你给没有的东西赋值初始化(0个嘛),肯定报错了。你把int初始化为1应该就不会错了
想想我上学那时候也是这么写错,哈哈。想我需要用到几个就申请几个,其实你不必要那么节约的,很多时候如果是用基本的数据类型来解决问题的话都是会有冗余。如果用到数组,你先多申请点用吧,没必要因为这个小细节去浪费学习其他知识的机会
解决方案四:
你什么编译器
int arr[num],这种声明不行,必须是常量num
int arr[num] = {0},这个报错,也是num必须为常量,并且不能分配0个大小元素的数组,num初始是0
解决方案五:
C语言中的数组大小是固定的,定义的时候不能是变量
解决方案六:
想法很好,但是不支持这样写int arr[num]
解决方案七:
C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。
解决方案八:
你可以先#define num 20
然后再从键盘键入一个数。当然了不能比这个20大
解决方案九:
数组不能用变量啊,只能是常量
解决方案十:
数组不能用变量啊,只能是常量
时间: 2024-12-02 22:57:28