C语言可变长数组问题

C语言中如何实现可变长数组呢?以下是我的一个尝试,但是就是编译不通过。请高手指教
#include
int array_sum(int);
/*Declaration out of the main function*/
int main()
{
int l;
printf("This program is trying to achieve Variable Length Array by using Function.\n\nEnter the length of the array:");
scanf("%d",&l);
printf("The summation of the sequential array is %d.\n",array_sum(l));
return 0;
}
int array_sum(int n)
{
int a[n],i,s;
for(i=0;i<n;i++)
a[i]=i+1;
/*Initialize the Array by Assignment*/
for(i=0,s=0;i<n;i++)
s+=a[i];
/*Compute the summation*/
return (s);
}
/*C语言如何实现可变长数组?不是说在非主函数的被调用函数中定义的数组,其长度可以是变量或变量表达式吗?在本程序中,数组长的值l从实参传来,可是就是编译不通过,究竟是哪里错了呢?请高手赐教*/

第1个回答  2013-07-04
可变长数组只有执行了C99标准的编译器里才可以实现, 其他如VC6.0 VS编译器都没执行这个标准,所以没法使用可变长数组,只能动态分配数组。
第2个回答  2013-07-04
数组在申明时方括号里只能是常数 不能为变量,在调用的时候才可以为变量 所以这一招不管用 你可以用if条件语句或者switch条件语句 实现
当然你也可以从动态内存方面想
文件包含命令也不对
其它没仔细看
第3个回答  2013-07-04
这个是错误的, n为变量 这个值是不确定的 数组的大小编译时,就必须确定,你main函数scanf函数 输入n的值 所以,n的值不确定 a[n] 这个是错误的。 你可以申请动态内存,定义动态数组,大小由你决定 用calloc函数申请内存!
第4个回答  2013-07-04
在有的编译器中数组在定义时用的必须是常量,不能是变量。在有的编译器里其实也可以用变量的,只是不推荐使用,好像C99通过了数组定义时用变量,但是有的编译器还不能这样做,你大概是用到了这样的编译器了本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网