也只是说你可以用变量去定义数组,但是变长数组的大小在创建后就是不变得,而且变长数组必须的自动的存...
没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)n); 这样a变量就完全可以当作一个数组直接使用了,包括a[1]之类的。因为“...
如果你确定你使用的编译器能够很好的支持这个特性,那么你还是完全可以放心用的。有些人认为不建议这么做是因为栈的问题,然而,C标准并没有说VLA必须用栈实现。弄一个带错误校验的,小于零报错,缺省栈分配,空间不够改从堆分配的版本应该是更标准的实现。不过从堆分配当然也会有问题,比方说垃圾回收,但其实编译...
仔细想想这种情况也有一定道理,毕竟数组一般是很多的变量,直接复制开销比较大,禁止掉也是有一定道理的;...
结构体变量是自定义的数据类型,都可以像普通变量一样直接赋值,而数组作为基本的数据类型,却反而不能像普通变量一样直接赋值,很奇怪啊。我说,你错了,谁说数组是基本数据类型的?并不是写程序时能直接使用的就是基本数据类型。C语言的基本数据类型只有整数、实数(小数)两种。根据占据字节数的大小(决定了取值...
别说C了,C++、C#的数组都不能改大小,可C++有STL,C#有.NET Framework里的各种Container,C只是没有...
c语言中不可以用变量定义数组的个数。可以使用mallo函数 mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用;指针自身=(指针类型*)malloc(sizeof(指针类型)*数据数量);int*p=NULL;intn=10;p=(int*)malloc(sizeof(int)*n);...
常量表达式(const experssion):是指值不会改变 并且在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。const int a =1; //常量表达式 cosnt int b=a+1; //常量表达式...
不能。第一:你所说的变量没有定义。第二:数组已经定义整型a1这些变量不是整型。第三:数组名与第一个元素是地址常量,是不能被改变的。宗上所述,你所说的是不能的。