2 a334713698 a334713698 于 2016.02.25 13:16 提问

声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么

基本上,代码如下:

#include<stdio.h> 

int main(){
  int num = 0;
    printf("输入数组长度:");
    scanf("%d",&num);
    int arr[num]; //编译不报错
    //int arr[num] = {0};//编译报错
    return 0;
}

14个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.02.25 13:39

因为C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。
这个简单例子:http://c.biancheng.net/cpp/html/2748.html

henuyx
henuyx   2016.02.25 14:50

一般来讲,不能这么做的,必须指定数组的大小。但是测试中发现,堆栈中的数组大小,的确是在运行的时候确定的。

qq_27564553
qq_27564553   2016.02.25 16:20

为什么赋值会报错呢,因为编译的时候编译器只知道你申请的是num(0)个啊,而你输入的时候那是运行时,编译器在编译的时候会有检查,结果发现你给没有的东西赋值初始化(0个嘛),肯定报错了。你把int初始化为1应该就不会错了
想想我上学那时候也是这么写错,哈哈。想我需要用到几个就申请几个,其实你不必要那么节约的,很多时候如果是用基本的数据类型来解决问题的话都是会有冗余。如果用到数组,你先多申请点用吧,没必要因为这个小细节去浪费学习其他知识的机会

bdmh
bdmh   Ds   Rxr 2016.02.25 13:37

你什么编译器
int arr[num],这种声明不行,必须是常量num

int arr[num] = {0},这个报错,也是num必须为常量,并且不能分配0个大小元素的数组,num初始是0,

a334713698
a334713698 用Xcode写的。
接近 2 年之前 回复
a334713698
a334713698 用Xcode写的。
接近 2 年之前 回复
qq_34047461
qq_34047461   2016.02.25 14:11

C语言中的数组大小是固定的,定义的时候不能是变量

wen_wxpk
wen_wxpk   2016.02.25 14:26

想法很好,但是不支持这样写int arr[num]

a334713698
a334713698 不赋值的话,Xcode不报错- -~ 我还在学基础。后期是不是应该要用到指针,做到动态给数组设置长度
接近 2 年之前 回复
rl529014
rl529014   2016.02.25 14:48

C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。

rl529014
rl529014   2016.02.25 14:49

你可以先#define num 20
然后再从键盘键入一个数。当然了不能比这个20大

ultramanleoking
ultramanleoking   2016.02.25 15:51

数组不能用变量啊,只能是常量

ultramanleoking
ultramanleoking   2016.02.25 15:51

数组不能用变量啊,只能是常量

共14条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!