gpt4 book ai didi

c - 将变量设置为函数的返回类型

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

我似乎无法弄清楚为什么这行不通,我将“aHouse”变量传递给一个返回房屋的函数。我是 C 的新手,所以我仍在努力了解一些事情。

#include <stdio.h>

typedef struct house {
int id;
char *name;
} House;

House getHouse()
{
House *myHouse = NULL;

char c = getchar();
myHouse->id = 0;
myHouse->name = c; /*only single char for house name*/

return *myHouse
}

int main()
{
House *aHouse = NULL;

aHouse = getHouse();
}

最佳答案

首先:您正在使用 NULL 指针并在“getHouse”函数中为其赋值。这是未定义的行为,应该会导致访问冲突。

此外,您正在从 getHouse 按值返回一个 House 对象并尝试分配给一个指针类型。指针和值是两个不同的东西。

你根本不需要指针,除非你想在堆上动态分配你的房子。

House getHouse()
{
House myHouse;

char c = getchar();
myHouse.id = 0;
myHouse.name = c; /*only single char for house name*/

return myHouse
}

int main()
{
House aHouse;

aHouse = getHouse();
}

编辑:为了提高效率,您可以这样实现:

void getHouse(House* h)
{
char c = getchar();
h->id = 0;
h->name = c; /*only single char for house name*/
}

int main()
{
House aHouse;
getHouse(&aHouse);
}

再次编辑:同样在 House 结构中,由于名称只能是一个字符,因此名称不要使用字符*,只需使用字符即可。

关于c - 将变量设置为函数的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007690/

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