gpt4 book ai didi

c - 函数计算并返回两个值

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

我有一个这样定义的结构

struct statistics {
double x;
double y;
} statistics;

好的,现在另一个函数填充声明的该结构的数组

struct statistics* array_stats[DIMENSION]

我的问题是另一个函数将所有 array_stat 结构作为输入并计算我必须在新结构中使用的两个值

 struct statistics* result

我想过写一个像这样的函数

void foo(struct statistics* output, struct statistics* input[]) {
int i;
for (i=0; i<DIMENSION; i++) {
output->x += input[i]->x;
output->y += input[i]->y;
}
}

在函数之外,我希望能够使用函数中计算的 xy 读取输出(因为我在函数中传递了指向结构的指针,我应该是能够做到这一点,我错了吗?当我尝试最后读取结果时,我得到了垃圾(结构被正确地分配并初始化为零,如果我尝试直接在主函数中执行我需要的操作,我会得到很好的结果。

我做错了什么?

最佳答案

将第一个参数声明为指向结构的指针是没有意义的。该函数可以通过以下方式声明

struct statistics foo( struct statistics * input[], size_t n ) 
{
struct statistics output = { 0.0, 0.0 };

size_t i = 0;
for ( ; i < n; i++ )
{
output.x += input[i]->x;
output.y += input[i]->y;
}

return output;
}

并称其为

struct statistics sum = foo( array_stats, DIMENSION );

至于你的问题,似乎你将一个未初始化的指针传递给结构作为函数的参数。

或者您可能在函数内分配一个结构。然而函数的参数是它的局部变量。因此,原始参数不会更改,因为该函数处理原始参数的副本

关于c - 函数计算并返回两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30783652/

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