Инициализация массива структур - PullRequest
0 голосов
/ 11 сентября 2018
     struct forces{
        double fo[1];
        double ft[1];
    };
    int main(void){
        struct forces frc;
        frc.fo[0]=6;
        frc.fo[1]=56;
        frc.ft[0]=567;
       printf("%.0lf\n",frc.fo[1]);
        return 0;
    } 

Пожалуйста, помогите.Почему моя распечатка всегда frc.ft [0]?

1 Ответ

0 голосов
/ 11 сентября 2018

С вашим объявлением fo [1] не существует, и запись в него - неопределенное поведение для C и C ++.

Измените ваше объявление на это, чтобы сделать fo [1] допустимым элементом

struct forces{
    double fo[2];
    double ft[1];
};

В C и C ++ (и большинстве похожих языков) объявление foo [5] создает 5-элементный массив с допустимыми значениями индекса [0] ... [4].int foo [1] имеет только допустимый индекс foo [0]

С вашим кодом вы видите fo [1] вместо ft [0], потому что ваш компилятор поместил две двойные переменные вместе в память без пробела(отступ) между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...