gpt4 book ai didi

c - 为什么 C 函数不能返回数组?

转载 作者:行者123 更新时间:2023-12-04 11:23:54 36 4
gpt4 key购买 nike

在 C 中,一个 struct (记录数据结构)可以是函数的返回类型,但数组不能。 C 语言的哪些设计特征导致数组异常?

最佳答案

由于历史原因,C 语言中的裸数组类型不可复制。由于这个原因,不可能用数组初始化数组、将数组分配给数组、按值传递数组作为参数或从函数返回数组。 (初始化上下文有一个明显的异常(exception) char s[6] = "Hello";。)

如果数组包装在 struct 类型中,仍然可以执行上述所有操作,这表明该限制本质上是纯声明性的。没有令人信服的技术原因。

C 语言从其历史上的前辈 B 和 BCPL 语言继承了其数组实现方法。在 B/BCPL 中,数组被公开实现为指针,这意味着尝试将一个数组分配给另一个数组实际上代表了指针的分配。 C 语言遵循不同的方法。在 C 中数组不是指针,但 C 数组的接口(interface)规范与 B/BCPL 的接口(interface)规范保持表面兼容。在大多数情况下,C 中的数组仍然“假装”为指针。这是它们不能立即复制的原因之一。

关于c - 为什么 C 函数不能返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26265489/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com