在函数中使用指针从输入中获取值

Using pointer in function to get value from the input

我想从我使用 read(&g) 声明的 Triangle 结构中的输入中获取值 但是,当我使用子函数时,我对指针感到困惑

typedef struct {
int a,b,c;
}Triangle;

void read(Triangle *pointer)
{
printf("Enter the sides of triangle:\n");
int x,y,z;
(*pointer).a = x;
(*pointer).b = y;
(*pointer).c = z;
scanf("%d%d%d",&x,&y,&z);
}


int main()
{
Triangle g;
read(&g);
printf("%d ",g.a);
printf("%d ",g.b);
printf("%d ",g.c);
}

您可以通过使用 scanf 直接 读入成员变量来简化 read 函数。 (此外,"pointer" 并不是指针变量的好名称)。这是一个更简洁的版本:

void read(Triangle *pT)
{
    printf("Enter the sides of triangle:\n");
    scanf("%d%d%d", &(pT->a), &(pT->b), &(pT->c));
}

注意:对于 struct 变量本身,您可以使用 . 运算符来访问成员(如 main 中的 g.a);对于指向该 struct 变量的 指针 ,您可以使用 -> 运算符访问该成员(与我的代码中的 pT->a 一样)。由于 scanf 想要每个成员的 地址 ,您添加 & 运算符 - 括号清楚地表明您想要的地址。