我正在尝试打印newBall的x值,但不知道如何访问它。有人可以帮我吗?我有一个指向结构AllBalls中的结构球的指针。我收到一个编译错误,说x不是结构的成员。
#include <stdlib.h>
#include <stdio.h>
struct Ball {
char id;
double x;
double y;
double Vx;
double Vy;
};
struct AllBalls {
int count;
struct Ball *ballPtr;
};
int main(void)
{
int index = 1;
struct AllBalls list = {0, NULL};
struct Ball newBall;
double x, y, Vx, Vy;
int input;
printf("Enter input: ");
input = scanf("%lf %lf %lf %lf", &x, &y, &Vx, &Vy);
list.count++;
list.ballPtr = &newBall;
newBall.id = 64 + list.count;
newBall.x = x;
newBall.y = y;
newBall.Vx = Vx;
newBall.Vy = Vy;
printf("%lf", *(list.ballPtr).x);
}
答案 0 :(得分:3)
问题出在这行快要结束了:
printf("%lf", *(list.ballPtr).x);
成员选择运算符.
的优先级高于取消引用运算符*
的优先级。因此,编译器认为您正在尝试将指针作为结构访问。您可以通过移动括号来解决此问题:
printf("%lf", (*list.ballPtr).x);
或者使用指向成员运算符->
的指针代替:
printf("%lf", list.ballPtr->x);