remdesivir(larevo)
Variable length arrays is a feature where we can allocate an auto array (on stack) of variable size. It can be used in a typedef statement. C supports variable sized arrays from C99 standard. For example, the below program compiles and runs fine in C.
void fun(int n)
{
int arr[n];
// ......
}
int main()
{
fun(6);
}
(#14375468@0)
Last Updated: 2022-2-15
This post has been archived. It cannot be replied.
Replies, comments and Discussions:
-
工作学习 / 学科技术 / 刚跟孩子争论了半天C语言里面的变长数组,发现自己落伍了。我脑子还是大学时候的记忆,认为数组大小是编译时候定好的,但是后来C99允许了。难道是我记错了?
-remdesivir(larevo);
2022-2-15
{900}
(#14375468@0)
Variable length arrays is a feature where we can allocate an auto array (on stack) of variable size. It can be used in a typedef statement. C supports variable sized arrays from C99 standard. For example, the below program compiles and runs fine in C.
void fun(int n)
{
int arr[n];
// ......
}
int main()
{
fun(6);
}
-
你大概一直在Windows上(MS 不支持)。Linux上十几年前就有了
-gta_palace(呄 - 每天乃古);
2022-2-15
(#14375484@0)
-
我最后用C是95年,全是各种unix上.
-remdesivir(larevo);
2022-2-15
(#14375492@0)
-
也对这段codes好奇:没有malloc call 这段codes就能运行?
-zbeifly(苇子坑);
2022-2-15
(#14375539@0)
-
可以,试过了。让我感到很惊奇。不需要malloc or calloc, 内存是从stack 中分配,不是heap.
-remdesivir(larevo);
2022-2-16
(#14375714@0)
+1
-
我觉得难以置信。你是在 unix下吗?Java的dynamic memory allocation 是JVM 里专门有个thread 负责管理。Unix/Linux C 难道现在也弄出个 CVM?
-zbeifly(苇子坑);
2022-2-16
(#14377416@0)
-
你大概从没写过C程序吧,alloca 出现差不多有30年了吧
-gta_palace(呄 - 每天乃古);
2022-2-16
(#14377435@0)
-
编译器帮你转用heap了.你看看变量地址吧
-somepeople(不要PM我,就不改);
2022-2-18
(#14381571@0)
-
Windows 也可以,compiler 支持就行。
-starw(starwar);
2022-2-18
(#14381208@0)
-
现在c的项目已经少了,大部分转向c++,
-googlebot(bot);
2022-2-16
(#14377562@0)
-
C的项目C++并不合适,很多转向Rust了
-geekcode(文心雕码);
2022-2-16
(#14377838@0)
-
在多伦多根本就没啥c++的工作了。。。现在手生的很,看见c++代码会不自禁带入java的写法了。
-zhengy4(_);
2022-2-18
(#14381060@0)
-
唉,都是眼泪呀。C++没戏了。Java好学吗?
-newrover(漫游);
2022-2-18
(#14381121@0)
-
转 java 不如转 C# ---- 你看和 C++ 多象
-xmlhttprequest(build5381);
2022-2-18
(#14381543@0)
-
哪一种需求更多涅?
-newrover(漫游);
2022-2-18
(#14381724@0)
-
游戏Unreal编程C++还是很火的,其他的吗,很少见到应用层用C++了
-binghongcha76(一只大猫);
2022-2-18
(#14382162@0)
-
要实现动态数组的方法在C++/C里有很多,一组 std::set / std::vector / std::array 都是动态的,使用上很方便。
-flycloudy(ag);
2022-2-16
(#14377591@0)
-
这些都是c++,c没有std
-moonhalf(石室矢士);
2022-2-18
(#14381114@0)
-
对,这样也可以 char list[sizeof(s)]
-starw(starwar);
2022-2-18
(#14381201@0)
-
C99是有很多新东西,但不是所有平台都支持C99。如果需要考虑多平台通用性,则需要慎用C99
-haploidus(今剩叹);
2022-2-18
(#14381213@0)
+1
-
基本没有用过C。C99难道不应该是20年前的东西吗?为什么会支持不足呢?
-newrover(漫游);
2022-2-18
(#14381299@0)
-
C程序的对象经常是各种小板子,compiler的支持有限。
-haploidus(今剩叹);
2022-2-18
(#14381370@0)
-
20年前的标准都不支持?C++这边20版好像都粗来了,虽然路也是越走越窄。
-newrover(漫游);
2022-2-18
(#14381376@0)
+1
-
单板机的资源有限,一些耗资源的library往往没有,比如C++的library就没有。
-haploidus(今剩叹);
2022-2-18
(#14381382@0)
-
老大,不支持C++我理解。但是,既然支持C编译器,那二十多年前出来的标准都不支持,还是超出了我的想象。感觉不至于如此啊?😢
-newrover(漫游);
2022-2-23
(#14393793@0)
-
有人说微软当年为了推C++故意不支持C99,拖拖拉拉直到VS2015才基本实现。GCC也没有完全支持。
-haploidus(今剩叹);
2022-2-23
(#14393832@0)
-
哎我去,微软真这么干?图啥呀,C++又不是微软独家提供。
-newrover(漫游);
2022-2-23
(#14393856@0)
-
当年VSC++可是很火的。
-haploidus(今剩叹);
2022-2-23
(#14393861@0)
-
是啊。用VS的,很少有人用C吧?感觉是两拨客户啊?可能需求太少,微软也就没动力把C编译器弄好
-newrover(漫游);
2022-2-23
(#14393872@0)
-
C主要还是给讲求效率的低端单板机编程,这些单板机的C compiler几乎都是用GCC改的,GCC如果不完全支持C99,这些compiler肯定也不支持。
-haploidus(今剩叹);
2022-2-23
(#14393887@0)
-
原来如此。谢谢
-newrover(漫游);
2022-2-23
(#14393904@0)
-
开源项目基本都是c99,大部分只能在linux下编译,因为vs不支持c99,想在windows下编译开源项目都要累死,微软就是抵触开源项目,
-googlebot(bot);
2022-2-23
(#14393874@0)
-
嗯,这样就好理解了。就是想给别人找麻烦。让开源项目用不了VS的IDE
-newrover(漫游);
2022-2-23
(#14393881@0)
-
是为了抵制linux,当时移动设备和云还没兴起,当iphone出现后,微软感觉大势已去,就开始慢慢转向,
-googlebot(bot);
2022-2-23
(#14393907@0)
-
有道理
-somepeople(不要PM我,就不改);
2022-2-18
(#14381573@0)