Как получить доступ к данным из структурного указателя внутри структуры - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь напечатать значение x для newBall, но не понимаю, как получить к нему доступ.Кто-нибудь может мне помочь?У меня есть указатель на структуру Ball внутри структуры 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 голосов
/ 07 февраля 2019

Проблема в этой строке ближе к концу:

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

Оператор выбора элемента . имеет более высокий приоритет, чем оператор разыменования *.Таким образом, компилятор считает, что вы пытаетесь получить доступ к указателю в виде структуры.Вы можете исправить это, переместив скобку:

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

или воспользовавшись указателем на оператор-член -> вместо:

 printf("%lf", list.ballPtr->x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...