大学c++ 已下的两种定义数组的方法 哪个是正确的 要给出原因,谢谢!

Aintn=5,a[n];BconstintN=5;inta[n];Cintn;cin>>n;inta[n];... A int n=5,a[n] ;B const int N=5;int a[n]; C int n;cin>>n; int a[n]; 展开
 我来答
匿名用户
2016-06-28
展开全部
B正确。
A,C都是同一个错误,对数组的直接定义int a[n];
n不能是变量,其中A,C都是int n; n都是变量,因此错误。
B是const int N=5;
前面有个const修饰符,表示这是个常数类型,因此a[n];正确
如果要使用变量进行数组的定义,则需要用到new操作符
即将A,C中的a[n]改为 int *a=new int[n];
jcj228675
2016-06-28 · TA获得超过337个赞
知道小有建树答主
回答量:320
采纳率:50%
帮助的人:64.5万
展开全部
b正确。在程序编译时必须知道数组中元素的个数。编译时编译器无法知道变量中存储的值,所以无法通过编译。所以看上去都不对。但是b定义变量时用const,会发生编译优化,可以将它看作#define n 5,所以对编译器来说它n就是常量,等价于a[5]
追问
那C错的原因是不是 编译器无法读取到你为变量n赋予的值?
追答
是的。c这种情况可以用动态开辟内存的方法:先定义int指针,然后将malloc返回值赋予指针,就可以将这个指针当数组用了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2016-06-28 · 超过87用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:120万
展开全部
B是正确的
数组的定义 type var[size]即可,但是size必须是常量,这样申请到的数组大小有效,并且是栈内存,貌似在2M左右。
若要动态申请一个任意大小的数组,则需要使用new语句来创建
type * pointer = new type[size];此处size是能在堆内存上申请到的内存大小,可以为0~maxMemorySize中的任意值。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式