Элементы указателя на массив на другой массив - PullRequest
0 голосов
/ 20 мая 2018

Итак, я работаю с этой структурой:

typedef struct{
    int id;
    int *grades;
}Student;

Там, где у студента есть идентификатор и массив оценок, которые могут иметь от 1 до 40000 элементов.

Я хочуесть функция для добавления нового студента, вроде этого:

void newSt(int id, int *grades){

    Student st;
    st.id = id;
    /*adding grades*/

    /*other operations I might want to do*/
}

Но я немного запутался в том, как работать с указателями и распределением памяти, так как я знаю, что никогда не будет больше 40000элементы, возможно, я мог бы сделать:

 st.grades = malloc(40000*sizeof(int);

Но тогда я не знаю, сколько элементов имеет класс, который я хочу добавить.Я не думаю, что не могу перераспределить оценки массива до 40000 элементов, потому что я никогда ничего не выделял.Какой лучший способ для меня это сделать?

1 Ответ

0 голосов
/ 20 мая 2018

Не зная размера массива оценок, это проблема.Вы не можете обработать массив (в C), не зная его размера.

С точки зрения работы с вводом неизвестного размера, стандартная техника состоит в том, чтобы выделить malloc определенный объем памяти, а затем удвоить выделение каждыйвремя, когда вам нужно увеличить его, но я не думаю, что это то, о чем вы спрашиваете.

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