中易网

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

答案:5  悬赏:40  
解决时间 2021-01-18 12:39
  • 提问者网友:战皆罪
  • 2021-01-17 14:38
c语言数组名后面那个中括号[ ]里可不可以是表达式?为什么
最佳答案
  • 二级知识专家网友:走死在岁月里
  • 2021-01-17 16:09
“[]”中间必须是整形常量或整形常量表达式。
数组定义时,必须指定数组的大小,数组大小必须是整形常量表达式,不能是变量或者变量表达式

错误例子:int n=10; int a[n]; int b[10.3]; int c[n+10];
全部回答
  • 1楼网友:神鬼未生
  • 2021-01-17 19:11
可以是返回值为正整数的表达式
  • 2楼网友:逃夭
  • 2021-01-17 18:41
我觉得数组的【】括号中的一定是常量,否则在编译器无法设置内存空间。所以可以是表达式,但是应该是常量表达式,不能是变量。
  • 3楼网友:患得患失的劫
  • 2021-01-17 17:25
数组必须先分配内存空间才能使用,所以初始化的时候不能是表达式,但是却可以这样用:
int a[11]; for(int i = 10; i>5; i--) a[i-5] = 1;
  • 4楼网友:山河有幸埋战骨
  • 2021-01-17 16:50
可以,但是要注意一点,
这个表达式返回值一定要是正整数或者零
其他的都是错误的
给你举个例子吧
如求一个数字字符串中数字出现的频率
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息