gpt4 book ai didi

c - 结构体数组不保存

转载 作者:行者123 更新时间:2023-11-30 15:15:00 25 4
gpt4 key购买 nike

我正在计算 c 中的结构,但我不确定为什么它没有返回值。我知道,当您向函数传递一个数组并添加值时,这些值位于函数后面的数组中。对于结构来说也是如此吗?下面是我的代码的简化版本(我的结构有更多内部变量,但它们也没有被返回)。

typedef struct {
double points;
FILE *file;
} Polygon;

void readobject(FILE *g, Polygon poly) {
fscanf(g, "%lf", &poly.points); //lets say this is reads in 6.0
printf("%lf\n", poly.points); //this will print 6.0
}


int main (int argc, char **argv){
Polygon polygon[argc];
int cc = 0;
polygon[cc].file = fopen(argv[cc], "r");
readobject(polygon[cc].file, polygon[cc]);
printf("%lf\n", polygon[cc].points); //This prints out 0.0
}

为什么会这样做?我怎样才能让它返回6.0?

最佳答案

您正在按值将对象传递给readobjectreadobject 中的修改是函数本地的。您需要传递一个指向该对象的指针,以使更改在 main 中可见。

void readobject(FILE *g, Polygon* poly) {
// ^^
fscanf(g, "%lf", &(poly->points)); //lets say this is reads in 6.0
printf("%lf\n", poly->points); //this will print 6.0
}

然后使用以下方式调用:

readobject(polygon[cc].file, &polygon[cc]);
// ^^

关于c - 结构体数组不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796503/

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