c语言数组名后面那个中括号[ ]里可不可以是表达式?为什么

 我来答
周碧娇是我老婆
推荐于2017-11-25
知道答主
回答量:4
采纳率:0%
帮助的人:3.3万
展开全部
“[]”中间必须是整形常量或整形常量表达式
数组定义时,必须指定数组的大小,数组大小必须是整形常量表达式,不能是变量或者变量表达式

错误例子:int n=10; int a[n]; int b[10.3]; int c[n+10];
淦海瑶s1
2012-03-14 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:754万
展开全部
可以,但是要注意一点,
这个表达式返回值一定要是正整数或者零
其他的都是错误的

给你举个例子吧
如求一个数字字符串中数字出现的频率
char a[100];
int b[10]={0};//计数数字出现的次数
int i=0;
gets(a); //输入数字,否则有可能出错,因为b的下标超过9
while(a[i])
b[a[i++]-'0']++; //这里a和b的下标都是表达式

a的下标是i++,是正整数或零
b的下标是a[i++]-'0'是a[i]中的数字的ascii码值减去0的ascii码值,是0~9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaoheng253
2012-03-13
知道答主
回答量:8
采纳率:0%
帮助的人:8.5万
展开全部
我觉得数组的【】括号中的一定是常量,否则在编译器无法设置内存空间。所以可以是表达式,但是应该是常量表达式,不能是变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1個魜_等待
2012-03-14 · 超过13用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:34万
展开全部
数组必须先分配内存空间才能使用,所以初始化的时候不能是表达式,但是却可以这样用:
int a[11]; for(int i = 10; i>5; i--) a[i-5] = 1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-13
展开全部
可以是返回值为正整数的表达式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式