冰天雪地360跪求C语言高手~~~~~~~~~~~~·有关数组的问题。。。

C选项哪错了呢?是因为C选项的n还是看做一个变量而不是常量嘛?但是前面定义了n,又输入n,不能将n看做一个常量嘛???初学者,各位大侠不要笑。。。... C选项哪错了呢?是因为C选项的n还是看做一个变量而不是常量嘛?但是前面定义了n,又输入n,不能将n看做一个常量嘛???
初学者,各位大侠不要笑。。。
展开
 我来答
瀚漠
2013-03-20 · 专注C语言发开,Linux系统相关
瀚漠
采纳数:309 获赞数:1289

向TA提问 私信TA
展开全部
这个题目应该挺老的了,c语言有很多个版本的国际标准,在2000以前,使用的是C89和C90这些标准,而这些标准是不支持:不定长数组的。

在2000年3月份新出标准C99,而这个标准中明确指出增加特性:
支持不定长的数组,即数组长度可以在运行时决定。
变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。
取消了函数返回类型默认为 int 的规定。
....等等

可以看出C99标准中,C答案是对的。

对于现在的各个编译器软件来说,都是支持不定长数组的(除非是非常老的且未更新的编译器),当然现在最新标准已经不是C99,而是C11,但是所有标准都是向下兼容的,新标准总兼容老标准。

纯手打,望采纳。。。
追问
好难懂喔,但还是谢谢你啊
追答
额,就是说,对现在的编译器来讲,C答案肯定是对的。。
kingfeng588
2013-03-20 · TA获得超过2494个赞
知道大有可为答主
回答量:1475
采纳率:50%
帮助的人:1930万
展开全部
C中n是一个变量。这里你要分清楚。
数组a的长度是要在编译时就要确定,而不是在运行的时候,c中就是在运行的时候才确定,这是不行的。。
也就是说n必须是常量,如果是变量,则需要使用指针和申请内存的方式来实现。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文霞yi莉
2013-03-20 · TA获得超过266个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:120万
展开全部
先声明后使用,A选项应该没问题吧。c选项违背了上一个原则,这些原则是由编译器决定的,它说错就错,而且n是变量,所以B也错,而D就不一样了,SIZE在这里不是变量而是常量。所以D正确!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w120870593
2013-03-20
知道答主
回答量:19
采纳率:0%
帮助的人:10.8万
展开全部
给数组赋值必须是常量,你前面n是一个变量,无论你是否在a[n]前赋值,但编译器始终认为n是变量,肯定不对噻
追问
但比如说scarf我输入10,那么n不就是10了嘛?不就是常量了嘛?
追答
不能这样,这样预编译都不能通过,你自己写个类似的程序,看看输出框给你的警告或错误就知道了,在C语言中,数组长度绝对是固定的,不然编译器无法处理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ismartbug
2013-03-20 · TA获得超过740个赞
知道小有建树答主
回答量:152
采纳率:100%
帮助的人:147万
展开全部
我明白你的意思,但是你想想,

你写的代码是要编译成EXE可执行文件的,你都没有运行EXE,CMD窗口都没打开,你都不能输入,怎么让n初始化呢?

因此在编译前机器就人为是未初始化的变量,而不是常量,数组下标只认常量。所以编译器在编译的时候就会报错。

不知道这样的表达你理不理解。
追问
明白了,谢谢你哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式