我想从我通过使用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);
}
您可以通过使用read
将直接读入成员变量来简化scanf
函数。 (此外,“指针”并不是指针变量的好名字)。这是更简洁的版本:
void read(Triangle *pT)
{
printf("Enter the sides of triangle:\n");
scanf("%d%d%d", &(pT->a), &(pT->b), &(pT->c));
}
注意:对于struct
变量本身,可以使用.
运算符访问成员(例如g.a
中的main
);对于该struct
变量的pointer,可以使用->
运算符访问该成员(与我的代码中的pT->a
一样)。由于scanf
希望每个成员的地址,因此添加&
运算符-方括号使您可以清楚地知道想要的地址。