
大学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];
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];
展开全部
b正确。在程序编译时必须知道数组中元素的个数。编译时编译器无法知道变量中存储的值,所以无法通过编译。所以看上去都不对。但是b定义变量时用const,会发生编译优化,可以将它看作#define n 5,所以对编译器来说它n就是常量,等价于a[5]
追问
那C错的原因是不是 编译器无法读取到你为变量n赋予的值?
追答
是的。c这种情况可以用动态开辟内存的方法:先定义int指针,然后将malloc返回值赋予指针,就可以将这个指针当数组用了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B是正确的
数组的定义 type var[size]即可,但是size必须是常量,这样申请到的数组大小有效,并且是栈内存,貌似在2M左右。
若要动态申请一个任意大小的数组,则需要使用new语句来创建
type * pointer = new type[size];此处size是能在堆内存上申请到的内存大小,可以为0~maxMemorySize中的任意值。
数组的定义 type var[size]即可,但是size必须是常量,这样申请到的数组大小有效,并且是栈内存,貌似在2M左右。
若要动态申请一个任意大小的数组,则需要使用new语句来创建
type * pointer = new type[size];此处size是能在堆内存上申请到的内存大小,可以为0~maxMemorySize中的任意值。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询