我有一个结构,需要用于两个不同的变量(firstVar和secondVar)。
我不想使用vectors,而只使用2个简单结构。
由于我不想复制需要用户输入的代码,因此我想创建一个我同时调用的操作(firstVar和secondVar)

我希望能够通过引用将结构传递给操作。
这是我的代码,我仍然不知道自己在做什么错。

#include <stdio.h>
typedef struct {
    int id;
    float length;
} tMystruct;
tMystruct firstVar;
tMystruct secondVar;

void readStructs(tMystruct *theVar)
{
    scanf("%d",theVar.id);
    scanf("%f",theVar.length);
}

int main(void)
{
    readStructs(&firstVar);
    readStructs(&secondVar);
    return 0;
}

最佳答案

这是问题所在

void readStructs(tMystruct *theVar)
{
scanf("%d",theVar.id); //<------problem
scanf("%f",theVar.length); //<------problem
}


您应该使用->运算符访问Structure指针成员,并且还缺少&,这最终会导致分段错误。

这是修改后的代码,

void readStructs(tMystruct *theVar)
{
scanf("%d",&theVar->id);
scanf("%f",&theVar->length);
}

关于c - 如何在C中通过引用传递结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53097276/

10-11 21:17