gpt4 book ai didi

error-handling - 代码中的逻辑错误

转载 作者:行者123 更新时间:2023-12-03 08:58:42 25 4
gpt4 key购买 nike

我应该填写的代码很容易。

#define MAX_NAME_LEN 128
typedef struct {
char name[MAX_NAME_LEN];
unsigned long sid;
} Student;
/* return the name of student s */
const char* getName(const Student* s) {
return s->name;
}
/* set the name of student s */
void setName(Student* s, const char* name) {
/* fill me in */
}/* return the SID of student s */
unsigned long getStudentID(const Student* s) {
/* fill me in */
}
/* set the SID of student s */
void setStudentID(Student* s, unsigned long sid) {
/* fill me in */
}

但是它说以下功能中的逻辑错误是什么?
Student* makeDefault(void) {
Student s;
setName(&s, "John");
setStudentID(&s, 12345678);
return &s;
}

我没有看到任何问题。我测试了它工作正常。

是因为这可能应该是一个void函数,并且不需要返回任何东西吗?

最佳答案

您无法返回指向本地声明的变量(Student)的指针。返回后,变量“s”将消失(成为垃圾)。

相反,您需要先分配一个学生。

您可能应该这样做:

void makeDefault(Student* pS) {
setName( pS, "John");
setStudentID( pS, 12345678);
}

然后让调用应用程序分配学生。

关于error-handling - 代码中的逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890639/

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