【发布时间】:2011-07-06 15:49:07
【问题描述】:
有些语言允许您像 Java 一样声明一个返回数组的函数,就像普通函数一样:
public String[] funcarray() {
String[] test = new String[]{"hi", "hello"};
return test;
}
为什么 C++ 不支持 int[] funcarray(){} 之类的东西?
你可以返回一个数组,但是做这样一个函数真的很麻烦。而且,我在某处听说字符串只是 char 数组。那么如果你可以在 C++ 中返回一个字符串,为什么不能返回一个数组呢?
【问题讨论】:
-
为什么不使用指针创建数组然后返回指针?
-
@RageD 当然,你可以这样做。但是 C++ 的创建者难道不能让数组返回函数自动完成而不打扰程序员吗?
-
@MisterSir:我想说这更像是一个特性——它允许一致性。如果您使用指针创建数组,则您已在堆上动态分配内存 - 也就是说,您可以通过引用返回并消除任何复制开销(因此数组的大小不会影响效率)。但是,您确实需要记住释放已分配的内存。
-
@MisterSir - 而且,它不会困扰程序员。 C 和 C++ 不是应用程序编程语言。它们是系统编程语言。因此,这些语言中的设计决策反映了预期的工作类型。别以为高大上。认为低水平。走低,下到金属。回顾我们在汇编、计算机组织和操作系统方面学到的东西。然后,当涉及到 C 和 C++ 时,事情就会开始变得更有意义。
-
@luis.espinal:“C 和 C++ 不是应用程序编程语言。它们是系统编程语言。[...] 不要想高水平。” - 它们被大量使用并且非常适合两者(C当然显示它的年龄)。您关于系统编程历史和使用有助于理解的观点是有效的,但不是暗示任何一种语言都不适合或不适合高级/应用程序编程。