Массив структур работает неправильно - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Создаю структуру, а потом динамически выделяю память для массива структур и присваиваю адрес начала указателю p_edu
5    
struct EduTerm
{
    int examNum;  // Count of Exams
    float totalScore;
};
 
p_edu = (struct EduTerm* ) malloc(termNums * sizeof(struct EduTerm));
 
//потом в цикле с помощью указателя пытаюсь их заполнить
 
for (int i = 0; i < termNums; ++i) {
.... 
    p_edu->examNum = examNum;
    p_edu->totalScore /= examNum;
...
    ++p_edu;
}
 
// в цикле все норм но когда я делаю вывод
for (int i = 0; i < termNums; ++i) {
    printf("Number of Exams in %d\n", p_edu[i].examNum);
    printf("Total score in %d ", p_edu[i].totalScore);
}
так вот не понятно почему первое значение выводит бредовое второе нулевое а если p_edu-> заменить в цикле на p_edu[i] то все нормально, хотя казалось бы и приращение указателя делаю и поочередно к элементам доступаюсь, в чем может быть проблема? и еще вопрос, немного путаюсь в Си из-за С++, когда я создаю указатель на структуру(не динамически), то я и сразу создаю структуру(в С++ создается просто указатель на объект типа данной структуры)?

Решение задачи: «Массив структур работает неправильно»

textual
Листинг программы
    const char *p;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы