c语言数组名后面那个中括号[ ]里可不可以是表达式?为什么
展开全部
可以,但是要注意一点,
这个表达式返回值一定要是正整数或者零
其他的都是错误的
给你举个例子吧
如求一个数字字符串中数字出现的频率
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
这个表达式返回值一定要是正整数或者零
其他的都是错误的
给你举个例子吧
如求一个数字字符串中数字出现的频率
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得数组的【】括号中的一定是常量,否则在编译器无法设置内存空间。所以可以是表达式,但是应该是常量表达式,不能是变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组必须先分配内存空间才能使用,所以初始化的时候不能是表达式,但是却可以这样用:
int a[11]; for(int i = 10; i>5; i--) a[i-5] = 1;
int a[11]; for(int i = 10; i>5; i--) a[i-5] = 1;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-03-13
展开全部
可以是返回值为正整数的表达式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询