gpt4 book ai didi

arrays - 将数组和结构传递给 C 函数

转载 作者:行者123 更新时间:2023-12-02 06:34:48 25 4
gpt4 key购买 nike

我想知道为什么我们可以通过值将结构传递给 C 函数,但我们永远不能对数组(通过地址传递)做同样的事情。

当我学习 C 时,他们告诉我数组会消耗很多堆栈,因此不建议按值传递它们。

但似乎结构通常(如果不是总是)比数组大,并且是更复杂的数据结构,所以这个解释现在对我来说没有意义!

任何人都可以提供尽可能详细的帮助吗?

最佳答案

在 C 中,数组始终定义为指向数组第一个位置的指针,因此根据定义,当您将数组传递给函数时,您将传递其内存地址,从而传递其引用。

当您定义结构类型的变量时,您将分配包含该结构所需的所有内存空间,并且如果您进行如下操作:

struct a, b;
...
a = b;

您正在将 b 中的所有值复制到 a,并且以同样的方式,当您将其传递给函数时,您正在将原始结构的值复制到堆栈中。这称为按值传递参数。

您在问题中所陈述的内容是真实的。结构体可能比数组更复杂,但完全可以将其作为值传递,而且可能效率低下,但不能按值传递数组的原因是因为它默认定义为指针。

关于arrays - 将数组和结构传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12442632/

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