有些人认为不建议这么做是因为栈的问题,然而,C标准并没有说VLA必须用栈实现。弄一个带错误校验的,小于零报错,缺省栈分配,空间不够改从堆分配的版本应该是更标准的实现。不过从堆分配当然也会有问题,比方说垃圾回收,但其实编译器把实现做得健壮点,考虑周全些,这些都是能做到的,因此这个特性,用当然是...
include <stdio.h>#include <stdlib.h>int main(){int n, i;// 声明整型数组指针变量int *array;printf("input n: ");scanf("%d", &n);// 创建长度为n的数组array = (int *)malloc(n * sizeof(int));// 赋值并输出for(i = 0; i < n; i++){array[i] = i + 1;printf(...
数组的大小不能用变量表示,因为在编译和连接过程中,内存应该根据您设置的长度为数组分配相应的内存空间。如果它是一个变量,就没有办法分配它。可以使用符号常量来解决此问题。首先,使用:#definem100 #defineN100,然后您可以在程序中定义u[m][N]二维数组。当它不一定是100时,它可以是任何正整数。 创新互联是一家...
C89 是不支持变长数组的。C99 开始支持用变量作为数组长度了。但是现在很多编译器不是完全支持 C99 要...
就像你在不同的编译器上运行同样的代码,得到的结果却不一样。gcc可以,vsc不行
原先的C编译器不允许用变量作声明数组的大小数据,后来的C++编译器允许用const变量作声明数组的大小,再后来一些编译器用普通变量也可以了。这是编译器的差异。现在绝大多数编译器都C++兼容C的,所以新型编译器有允许用变量声明数组的。
我有个疑问,为什么变量在定义的时候不能作为数组的长度,我可以理解为一句话没有执行完,变量没有分配内存空间。但是变量在定义的时候可以作为值赋给另外一个变量。这是为什么?求解答。(上代码错误,下代码正确) 喃喃不忘 低能力者 5 我给我的学生讲错了,令人难受,现在才发现。 喃喃不忘 低能力者 5 我一直...
C89 是不支持变长数组的。C99 开始支持用变量作为数组长度了。但是现在很多编译器不是完全支持 C99 要...
intn;scanf("%d",&n);inta[n];注意:这种数组在定义之后,其长度在数组的生存期内不可改变。而且...
所以结论是,C的数组没有任何问题,你只是需要一个类库,比如这个,或者你自己随便找的任何一个:/ - ccl - C Containers library别说C了,C++、C#的数组都不能改大小,可C++有STL,C#有.NET Framework里的各种Container,C只是没有自带一个强大万能的类库而已,可你不能说它压根没有啊。只是得花得时间找找。 同时,...