gpt4 book ai didi

c - 将结构发送到 C 中的函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:21 25 4
gpt4 key购买 nike

我有一段代码示例,我对此有疑问。这是代码。我的问题是代码底部附近的评论,我想知道是否有人可以提供帮助。在这里混淆。

#include <stdio.h>
#include <string.h>

struct car {
char make[30];
char model[30];
int year;
};

struct car f(struct car c);

int main(void)
{
struct car c1 = {"Ford", "Mustang", 2014}, c2;
c2 = c1;

printf("%s, %s, %d\n", c1.make, c1.model, c1.year);
c2 = f(c1);
printf("%s, %s, %d\n", c2.make, c2.model, c2.year);
}

struct car f(struct car c) /* Is car here referring to the structure at the very top
of the program, so it knows what structure to put it? */
{
struct car temp = c; /* What exactly is c in this function and why copy it? */
strcpy(temp.model, "Explorer");
temp.year += 5;

return temp;
}

代码打印:

Ford, Mustang, 2014
Ford, Explorer, 2019

最佳答案

struct car 是一种类型,它在程序的顶部定义。所以 struct car f(struct car c) 是一个名为 f 的函数,它将一个名为 cstruct car 作为一个参数,并返回另一个 struct car

复制c 的原因是您可以更改其中一个而不影响另一个。由于在这种情况下您按值传递了 c,所以这并不重要;你可以编辑 c 然后返回它。但是,如果您通过引用传递它(即传递指向它的指针),那么修改它会更改调用者的副本,这可能不是您想要的。

关于c - 将结构发送到 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592442/

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