也只是说你可以用变量去定义数组,但是变长数组的大小在创建后就是不变得,而且变长数组必须的自动的存...
没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)n); 这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“...
如果你确定你使用的编译器能够很好的支持这个特性,那么你还是完全可以放心用的。有些人认为不建议这么做是因为栈的问题,然而,C标准并没有说VLA必须用栈实现。弄一个带错误校验的,小于零报错,缺省栈分配,空间不够改从堆分配的版本应该是更标准的实现。不过从堆分配当然也会有问题,比方说垃圾回收,但其实编译...
C语言中不支持。C++中支持变长数组(你可以自行度娘变长数组和alloca函数),但是因为其实在栈上分配,不被推荐使用。做为解决方案,你可以使用C式的malloc函数或者C++式的new函数来在堆上动态分配内存,这样长度是完全可以自定的。
不可以的,定义数组不可以用变量的,如果非要随机定义长度的话,可以用malloc函数 struct student *stu ...
C89 是不支持变长数组的。C99 开始支持用变量作为数组长度了。但是现在很多编译器不是完全支持 C99 要...
这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。
C语言中C99引入了VLA数组,其允许将变量作为数组的长度,C11将其变为了可选项,由编译器自己决定是否允许这种操作。 arcade. 毛蛋 1 c99之前的需要用动态内存分配malloc stanchcorder6 毛蛋 1 如果这个数组是在函数内部定义,就是正确的。不过要注意,这种数组的长度一旦确定,在它的生存期内不能调整,而且这种数组也...
这样是非法的。因为n是变量也就是说,n可以为赋任何值,这样就违背了静态空间分配的原则,所以数组长度...
关于数组的定义,下列描述中错误的是( )A.不可以使用变量或变量表达式做数组的长度。B.一个数组中的各元素的数据类型相同。C.不可以使用符合常量做数组长度。D.同一个程序