为什么 C 不简化数组返回类型
虽然 Java 等编程语言允许简单的数组返回类型,但 C 需要更复杂的方法。这不是任意的,而是源于基本的语言设计决策。
内存管理和按值传递与按引用传递
C 区分传递-按值传递和按引用传递。数组名本质上是指针。按值传递数组的结果是其第一个元素的内存地址,该地址在函数作用域之外就会丢失。
与 Java 对比
Java 表面上使用传递-value,但它使用通常是内存地址的“聪明”值。 Java 方便的数组返回类型是通过自动内存管理和指针包装来实现的,从而导致效率降低。
C 的权衡
C 的创建性能为优先考虑,为了速度而牺牲自动内存管理。返回 C 数组需要显式内存分配和指针处理,镜像 C 的方法。
模板类异常
模板类可以返回数组,因为它们使用类。然而,返回 C 数组仍然需要手动内存管理。
历史上下文
C 的创建者 Bjarne Stroustrup 旨在保留 C 的性能,同时结合来自模拟。限制自动内存管理的决定是为了提高效率。
因此,虽然 C 支持数组返回类型,但与 Java 更简化的方法不同,它优先考虑内存管理和速度而不是便利性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3