기본적으로 내가하려는 것은 주어진 인덱스에서 동적 배열에 무언가 (다항식)를 할당하고 거기에 무엇이든 덮어 쓰는 것입니다. 간단히하기 위해 polynomialArray의 첫 번째 요소에 대한 포인터를 subtract()로 반환했습니다. 따라서이 코드는 첫 번째 요소의 내용을 복사하고 다른 요소를 대체해야합니다 (딥 복사가 필요하며 빼기로 구현 됨). 나는 자바에 버릇이있다. (그리고 너는 친절한 사람들이다.) ...구조체의 동적 배열에 대한 포인터 할당
복사 된 색인에 인쇄하려고하면 아무 것도 없다. 보통 Poly1 = 2x^3 + 4x
과 같은 것이 인쇄되지만, 단지 Poly1 =
만 인쇄됩니다.
잘 컴파일되고 실행되지만 필요한 것은 수행하지 않습니다. 편집 : 그 인덱스에 아무것도없는 경우 잘 실행됩니다. 색인에 무언가가있는 경우 오류가 발생합니다.
//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
'programming-languages' 태그를 질문에 추가하는 것을 멈출 수 있습니다. 그건 꼭 필요 하진 않아. –
인쇄 기능을 보여줄 수 있습니까? – MByD