gpt4 book ai didi

c - 需要更改哪些内容才能使我的 C 程序更加用户友好?

转载 作者:行者123 更新时间:2023-11-30 14:41:40 26 4
gpt4 key购买 nike

我有一个程序,可以用 C 语言创建、插入、删除和销毁优先级队列。一切正常,但我有一个任务是让用户更轻松地创建队列。

int Error;
PrQueue* q1= create(&Error);
PrQueue* q2 = create(&Error);
PrQueue* q3 = create(&Error);

这是我创建优先级队列的方法。

PrQueue* create(int* Error)
{
PrQueue* Meta = (PrQueue*)malloc(sizeof(PrQueue));
if(Meta == NULL)
{
*Error = 1;
return NULL;
}
Meta->NrOfItems = 0;
Meta->Head = NULL;
*Error = 0;
return Meta;
}

这就是函数

typedef struct Element
{
int Data;
int Priority;
struct Element *Next;
struct Element *Prev;
} Element;


typedef struct
{
int NrOfItems;
struct Element *Head;

} PrQueue;

这就是结构。所有这些代码部分都位于不同的文件中。第一个是 main.c ,第二个是functions.c,第三个是 .h 头文件。所以我需要的是以某种方式让用户更容易在 main 中创建优先级队列,我应该以某种方式摆脱 main 中的指针符号。我真的不知道它应该是什么样子,但据我了解它不应该在 main 中使用 * 。有什么想法我应该改变什么以及如何改变?

谢谢!

最佳答案

我的建议是将 create() 函数转换为 init() 函数;这将允许用户在其他对象内和/或堆栈上创建 PrQueue 对象,而不仅仅是在堆上:

void init(PrQueue * Meta)
{
Meta->NrOfItems = 0;
Meta->Head = NULL;
}

这也意味着该功能不可能失败,因此用户不必进行任何错误检查。

用户可以这样使用它:

int main(int argc, char ** argv)
{
PrQueue q;
init(&q);
[...]
}

关于c - 需要更改哪些内容才能使我的 C 程序更加用户友好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842596/

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