在函数中使用指针从输入中获取值
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
想要每个成员的 地址 ,您添加 &
运算符 - 括号清楚地表明您想要的地址。
我想从我使用 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
想要每个成员的 地址 ,您添加 &
运算符 - 括号清楚地表明您想要的地址。