我似乎不明白为什么这样做行不通,我正在给“a House”变量传递一个返回一个House的函数。我是新来的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();
}

最佳答案

第一:
您正在使用一个空指针,并在“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结构中,由于名称只能是一个char,所以不要使用char*作为名称,只使用char。

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

10-12 21:20