所以结论是,C的数组没有任何问题,你只是需要一个类库,比如这个,或者你自己随便找的任何一个:/ - ...
如果你确定你使用的编译器能够很好的支持这个特性,那么你还是完全可以放心用的。有些人认为不建议这么做是因为栈的问题,然而,C标准并没有说VLA必须用栈实现。弄一个带错误校验的,小于零报错,缺省栈分配,空间不够改从堆分配的版本应该是更标准的实现。不过从堆分配当然也会有问题,比方说垃圾回收,但其实编译...
因为数组是确定大小的,在c++和c中都不能以变量声明,但可以采用以下方式:#define n 5int a[n];此时宏定义n为5,在程序编译时就已确定n.
这种类似用法我就经常在C里面使用。特别是泛型容器库,比如节点直接一个指针或者俩个指针,数据字段都不...
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!C语言中的结构体变量可以整体赋值、传值、作为返回值,而数组不行,这种不对称性是因为结构体和数组在理论和历史方面的不同设计考虑。 从理论角度看,结构体和数组是两种不同的数据结构。结构体是一个复合数据类型,封装了多个不同类型的值,而...
而且,结构体是一种可以自定义内容的复杂类型,定义成功后就可以用它的名字或别名来说明或定义它这种类型的变量、指针、数组等,而数组只是把一系列同类型的数据依次存放在一起,其他什么功能也没有。你上面说的那个a根本就不是指针,只是一个结构体变量,你硬要把它当指针来解释,哪能说通呢?——...
申请数组不能用变量,虽然有些编译能够通过,但这种写法就是错的 缺心眼的花 团子家族 10 有任何问题可以来有大神免费解答 萝卜哔 毛蛋 1 const int好像就可以,主要是怕变量的数值变了会导致数组的资料丢失吧... 大概 我知不知道502 大能力者 8 C99以后变长数组可以,c89标准里面是因为编译器在编译...
数组定义在哪里并不重要,重要的是数组的定义时的容量必须是常量表达式,不能使用变量,因为数组大小一旦被划定就无法动态的改变,所用你用define定义的是常量,那是正确的,而用int定义的是变量,那是不正确的
const int i=12;//a不叫常量,叫常值变量,其值在运行期间不能改变的变量,当变量看待。int aa[i];//这个定义非法,用变量做数组长度,C不允许。