c语言函数可变长数组 c语言可变参数函数定义( 二 )


所以这种方法可以做到软件意义上的无限大数组空间 。
但是这种方法代码量比较大,而且需要频繁的进行内存的分配,如果实现知道数据的最大可能规模,那么可以用另一个方法 。
2 事先知道数据的最大规模,比如统计一个班的分数时,一个班最多不超过百人,那么可以直接定义一个长度为100的数组,或者保险起见,定义一个长度为1000的数组,并对其操作 。这样在操作范围内,这个就是一个“无限长”的数组了 。
C语言怎样定义变长数组”变长数组“确实是有的c语言函数可变长数组 , 是在C99标准才出现的 。题主的写法没有错 。变长指的就是可以用变量指定数组大小c语言函数可变长数组,而不是说数组大小可以在runtime改变 。(”变长“这个这个翻译很怪啊.....)
写全的话应该是
int x = 2;//x定义并赋值c语言函数可变长数组,当然不一定是2
char array[x];
测试了一下,这样的代码在VC6.0下会报错,因为对C99新标准没有很好地实现 。VS2005也不行 。VS2013可以正确编译 。gcc 3.2.2也可以正确编译 。
c语言中长度可变的数组?如果一个数组具有动态存储周期(也就是说 , 如果在语句块内定义数组,并且没有 static 修饰符),那么 C99 也允许把非常量表达式作为元素数量来定义该数组 。这样的数组被称为长度可变数组(variable-length array) 。
而且,长度可变数组的名称必须是普通的标识符 。长度可变数组不能作为结构或联合的成员 。在下面的示例中,只有 vla 数组的定义是合法的:
void func( int n ){int vla[2*n];// 合法:存储周期为动态的static int e[n];// 非法:长度可变数组不可有静态存储周期
struct S { int f[n]; };// 非法:f不是一个普通标识符/* ... */}
c语言函数可变长数组的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言可变参数函数定义、c语言函数可变长数组的信息别忘了在本站进行查找喔 。

推荐阅读