По сути, все, что я пытаюсь сделать, это назначить что-то (полином) динамическому массиву с заданным индексом, перезаписывая все, что там есть. Для простоты я только что заставил subtract () возвращать указатель на первый элемент в polynomialArray. Итак, этот код должен копировать содержимое первого элемента и заменять другой элемент (я знаю, что необходима глубокая копия, и это реализовано в вычитании). Я был избалован Java (и вы, добрые люди) ...
Когда я иду печатать его по индексу, в который он копируется, там ничего нет.
Обычно печатается что-то вроде Poly1 = 2x^3 + 4x
, но вместо этого печатается Poly1 =
.
Компилируется нормально и запускается, но не делает то, что мне нужно. РЕДАКТИРОВАТЬ: работает нормально, если не было ничего по этому индексу. Если что-то есть в индексе, seg error.
//Portion of main from another file
Polynomial* subtracted = subtract(op1_index, op2_index);
insert(subtracted, diff_index);
printPolynomial(diff_index);
//Methods in question (utils file)
void insert(Polynomial* element, int index) {
if(index > num_polynomial) {
polynomialArray = (Polynomial*)realloc(polynomialArray, (index + 1) * sizeof(Polynomial));
}
free(polynomialArray[index].polynomialTerm);
polynomialArray[index] = *element; // Problem here?
}
Polynomial* subtract(int op1_index, int op2_index) {
return &polynomialArray[0];
}
//Typedefs accessible in main and utils file
typedef struct term {
int exponent;
int coefficient;
} Term;
typedef struct polynomial {
Term *polynomialTerm;
} Polynomial;
//variables accessible in utils file
static Polynomial *polynomialArray;
int num_polynomial; // counter to keep track of the number of polynomials