这就是C语言的局限性吗,Java中有对应的函数一调用就可以复制一个完全一样的数组

来源:6-1 数组基础【C语言设计哲学】

懒洋洋爱学习

2023-03-09

图片描述图片描述
老师,这是我用C语言写的归并算法的归并过程,您肯定了解归并过程中会设计到创建或开辟一个和原数组一样大小空间的数组,我的问题在于:C语言定义数组[ ]内部没法时变量,就不能是int copy[end - start + 1],就是在这里没办法开辟一个和原数组恰好一样大小的数组,我只能提前给它一个大小,万一这个数组大小给小了程序就错了,万一给大了那就又浪费了。
就网上的答案也只是在外面定义一个宏常量,您能理解我的问题所在吗,有没有巧妙的C语言语法来解决这个问题,我试着用动态分配的想法,开辟确定大小的空间,但还是不行…

写回答

1回答

bennyhuo

2023-03-09

可能VLA会满足你的需求,C99提供了支持,gcc很早就支持了。注意,这个C++不支持。C语言的数组是开辟在栈内存上的,需要编译时确定内存大小,这个跟Java的机制不一样,Java的数组开辟在堆上,可以动态分配空间。
1
1
懒洋洋爱学习
非常感谢!
2023-03-09
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程