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

作者:用户 来源:互联网 浏览:478 次 时间:2016-01-01 17:30:32

c语言数组

c语言-声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么 - 摘要: 声明一个数组,由用户输入数组长度。不赋初值不报错,赋初值就报错?为什么基本上,代码如下:#include<stdio.h>intmain(){intnum=0;printf(""输入数组长

问题描述

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

基本上,代码如下:

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

解决方案

因为C语言中的数组大小是固定的,定义的时候必须要给一个常量值,不能是变量。
这个简单例子:html/2748.html"" rel="nofollow">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大

解决方案九:

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

解决方案十:

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

【云栖快讯】云栖社区技术交流群汇总,阿里巴巴技术专家及云栖社区专家等你加入互动,老铁,了解一下?  详情请点击
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备

热点导航