也只是说你可以用变量去定义数组,但是变长数组的大小在创建后就是不变得,而且变长数组必须的自动的存...
综上所述,如果需要变量控制长度的一个数组,类似“int a[n];”的,可改成“intconst a = (int)malloc(sizeof(int)*n);”并直接作为数组以[]方式使用。const可以去掉,但要保证使用时不改变a的指向 const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用...
有些人认为不建议这么做是因为栈的问题,然而,C标准并没有说VLA必须用栈实现。弄一个带错误校验的,小于零报错,缺省栈分配,空间不够改从堆分配的版本应该是更标准的实现。不过从堆分配当然也会有问题,比方说垃圾回收,但其实编译器把实现做得健壮点,考虑周全些,这些都是能做到的,因此这个特性,用当然是...
c语言中不可以用变量定义数组的个数。可以使用mallo函数 mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用;指针自身=(指针类型*)malloc(sizeof(指针类型)*数据数量);int*p=NULL;intn=10;p=(int*)malloc(sizeof(int)*n);...
C89 是不支持变长数组的。C99 开始支持用变量作为数组长度了。但是现在很多编译器不是完全支持 C99 要...
就像你在不同的编译器上运行同样的代码,得到的结果却不一样。gcc可以,vsc不行
这样是非法的。因为n是变量也就是说,n可以为赋任何值,这样就违背了静态空间分配的原则,所以数组长度...
它表示定义了一个整型数组,数组名为 arr,定义的数组称为数组 arr。注:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念。(作者用的编译器是VS2019不支持C99标准)2.数组的初始化 所谓数组初始化是指在创建数组的同时给数组的内容一些合理初始值。下面举出...
在有的编译器中数组在定义时用的必须是常量,不能是变量。在有的编译器里其实也可以用变量的,只是不推荐使用,好像C99通过了数组定义时用变量,但是有的编译器还不能这样做,你大概是用到了这样的编译器了
C语言中可以用变量定义数组的个数。 原因如下: 由于数组在定义的时候,系统就会分配对应的存储单元,如果用变量,系统就不知道该分配多少字节的存储单元,就会报错。 但是可以用宏定义定义的常量定义数组个数,因为宏定义是在编译阶段进行字符.