例如 int val = 5;int a[val];变长数组中的变,也只是说你可以用变量去定义数组,但是变长数组的...
没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)n); 这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“...
如果你确定你使用的编译器能够很好的支持这个特性,那么你还是完全可以放心用的。有些人认为不建议这么做是因为栈的问题,然而,C标准并没有说VLA必须用栈实现。弄一个带错误校验的,小于零报错,缺省栈分配,空间不够改从堆分配的版本应该是更标准的实现。不过从堆分配当然也会有问题,比方说垃圾回收,但其实编译...
感谢 @秦天WelKin指正 不能用变量定义数组长度。应当使用malloc()为数组动态分配存储空间。---(以下原...
C89 是不支持变长数组的。C99 开始支持用变量作为数组长度了。但是现在很多编译器不是完全支持 C99 要...
这是错误的。 C中有 变长数组 的概念呀(c99标准),“变长”的意思就是 可以用变量来指定数组的长度,而数组一旦创建 长度就无法变化了,而且变量必须赋值在先,变长数组才能创建。某些人不能因为无法正确的设置编译器支持c99标准,而否定了 变长数组 这个用法。
我有个疑问,为什么变..我有个疑问,为什么变量在定义的时候不能作为数组的长度,我可以理解为一句话没有执行完,变量没有分配内存空间。但是变量在定义的时候可以作为值赋给另外一个变量。这是为什么?求解答。(上代码错误,下代码正确)
这样是非法的。因为n是变量也就是说,n可以为赋任何值,这样就违背了静态空间分配的原则,所以数组长度...
百度试题 题目定义数组时,表示数组长度的不能是( )。 A.整型变量B.符号常量C.整型常量D.整型常量表达式相关知识点: 试题来源: 解析 A 反馈 收藏
纯C编译器是不允许用变量定义数组长度的,编译都过不了。而后来的有些C++的编译器允许这样做的,但大多数用来做定义数组长度的变量要用const修饰,叫值不变变量,但纯C编译器即使用const修饰的变量也不允许用来定义数组长度。你说的“C和C++”都是允许的可能是你的编译器是C++兼容C的,时下纯C编译...