gpt4 book ai didi

c - 将结构的内容传递给 C 中的另一个变量

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

我现在有这段代码:

pacient sortClients(int n, pacient *lista, int print)
{
pacient aux[50];

for(i=0;i<n;i++)
*(aux+i)=*(lista+i);

//some modifications performed on aux

return *aux;
}

void sortAndShowByAge(int n, pacient *lista)
{
pacient aux[50];
*aux=sortClients(n,lista,0);

}

最后一个函数是我遇到麻烦的地方。如果 aux 只有一个记录那么它工作正常,如果有两个以上,它会显示一些奇怪的字符。在第一个函数中,我遍历了 lista 并将每条记录保存到 aux。有没有办法直接将 sortClients 中的 aux 分配给 shortAndShowByAge 中的 aux 而不是迭代?我无法迭代 sortClients。

最佳答案

您的代码只返回单个元素,而不是整个数组。它不能合法地返回写入的数组,因为它是一个局部变量。

您需要动态分配新内存,或就地排序。

前者与您已有的最相似,会像这样:

pacient * sortClients(int n, const pacient *lista, int print)
{
pacient *aux;

if((aux = malloc(n * sizeof *aux)) != NULL)
{
memcpy(aux, lista, n * sizeof *aux);
/*some modifications performed on aux */
}
return aux;
}

这将返回一个指向已排序/已处理数组的指针,您必须在完成后调用 free(),以免内存泄漏。

我还纠正了返回类型,并使用 memcpy() 而不是手动循环来复制输入值。输入数组也被标记为 const,因为它对于函数是只读的。

关于c - 将结构的内容传递给 C 中的另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001817/

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