如何从结构内的结构指针访问数据

时间:2019-02-07 02:04:04

标签: c

我正在尝试打印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);
}   

1 个答案:

答案 0 :(得分:3)

问题出在这行快要结束了:

 printf("%lf", *(list.ballPtr).x);

成员选择运算符.的优先级高于取消引用运算符*的优先级。因此,编译器认为您正在尝试将指针作为结构访问。您可以通过移动括号来解决此问题:

 printf("%lf", (*list.ballPtr).x);

或者使用指向成员运算符->的指针代替:

 printf("%lf", list.ballPtr->x);