关于c语言数组的方括号中能不能使用变量的问题。

在c语言教程中main(){intn=5;inta[n];……}说是错误的。但我又在一个例子里看到:main(){inti,a[10];for(i=0;i<10;)a[i... 在c语言教程中
main()
{int n=5;
int a[n];
……
}
说是错误的。
但我又在一个例子里看到:
main()
{int i,a[10];
for(i=0;i<10;)
a[i++]=i;
……
}
我就在想他咋又可以用a[i++]呢?
展开
 我来答
iiiiiiiipl
2019-07-05 · TA获得超过9921个赞
知道答主
回答量:68
采纳率:66%
帮助的人:3.7万
展开全部

方括号里必须是一个大于零的整数常量或者常量表达式

常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。

一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。

const int a =1; //常量表达式

cosnt int b=a+1; //常量表达式

int c=2; //初始值是字面值常量,当c数据类型是普通int。

扩展资料:

1.数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

3.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)

4.若不给可初始化的数组赋初值,则全部元素均为0值。

参考资料:

百度百科-数组

四舍五不入6
高粉答主

2020-03-08 · 醉心答题,欢迎关注
知道答主
回答量:147
采纳率:100%
帮助的人:2万
展开全部

方括号里必须是一个大于零的整数常量或者常量表达式

常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。

一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。

const int a =1; //常量表达式

cosnt int b=a+1; //常量表达式

int c=2; //初始值是字面值常量,当c数据类型是普通int。

扩展资料:

数组的方括号[]有以下使用情况:

1、定义

当用于定义时,数组方括号[]中的是数组含有的元素个数,即定义了数组的规模,这种情况下,按照ANSI C的标准,是不可以用变量的。

2、取值

当取数组a的第n个元素值时,可以使用a[n]的方式。

这种取值操作的情况下,是可以使用变量的,不过其中的变量只能为整型系列的类型,比如char, short, int, long等,或者对应的无符号类型。

参考资料来源:百度百科-数组

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风若远去何人留
推荐于2017-09-11 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450108
专业C/C++软件开发

向TA提问 私信TA
展开全部
数组的方括号[]有两种使用情况。
1 定义。
当用于定义时,数组方括号[]中的是数组含有的元素个数,即定义了数组的规模。
这种情况下,按照ANSI C的标准,是不可以用变量的。
不过目前有些编译器支持了C99及以上规范,在C99下,C语言数组定义时可以使用变量。
至于编译器是否支持,定义一个以变量为规模的数组,编译一下,如果能通过,那么就是支持的,反之则是不支持。
由于并不是所有编译器支持,这样的代码就不易于移植,所以不推荐使用这种写法。如果一定需要用动态值,可以采用动态数组的方式。

2 取值。
当取数组a的第n个元素值时,可以使用a[n]的方式。
这种取值操作的情况下,是可以使用变量的。对此,任意版本的C语言都没有做限制。
不过其中的变量只能为整型系列的类型,比如char, short, int, long等,或者对应的无符号类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友52d333f
推荐于2017-09-01 · 超过12用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:17.3万
展开全部
int a[n],是在定义一个数组,而数组的长度为n,n是一个变量,这在c语言是不允许,c语言不支持定义变长数组,因为在编译的时候,系统无法知道数组的长度是多少,也就无法为这个数组分配一个空间。
解决的方法有:
1、
#define N 5
int main()
{
int a[N];
...
return 0;
}
2、
#include<stdlib.h>
int main()
{
int n,*a;
n=5;
a=(int *) malloc(sizeof(int)*n);//动态申请一段空间,但是需要自己管理,就是说在程序结束前
//把这段内存释放掉,否则这段内存就无法被操作系统使用,就会变为垃圾,而且无法清除
...
free(a);//释放a所指的内存空间
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nnuuiy
2013-07-19
知道答主
回答量:4
采纳率:0%
帮助的人:5831
展开全部
只是定义的时候不能用变量。a[i++]这是你前面已经定义好了的 a[10]。记住!! a[ ]方括号内可以用变量,只是定义的时候不能用变量。如果一定要用字母表示可以这样写:#define N 5
int main()
{
int a[N];
...
return 0;
}
N其实也是前面定义的一个常量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式