0
#include <stdio.h>
#include <stdlib.h>

struct Fraction { 
    int num;
    int denom;
};

struct PolyTerm {
    int expo;
    struct Fraction coeff;
};

struct PolyNode {
    struct PolyTerm* dataPtr;
    struct PolyNode* next;
};

typedef struct Fraction* FractionAddr;
typedef struct PolyNode* PolyNodeAdr;
typedef struct PolyNode* PolyList;

int main() {
    int exponet;
    PolyNodeAdr polyNode = 0;

    printf("\n\tPlease Enter expoent: ");
    scanf("%d", &exponet);

    polyNode->dataPtr->expo = exponet;

    //printf("\n%d\n",polyNode->dataPtr->expo);

    return;
}

上記のコードでは、エクスポネットをポリノードの構造体のエクスポに格納しようとしています

しかし、私は多くの方法を試しましたが、エラーが表示され続けます

expo は int ではありませんか?指数 (int) を格納できないのはなぜですか?

struct PolyTerm dataPtr;polyNode の構造体を入れるだけで、いくつかの方法を確認しました

そしてpolyNode->dataPtr.expo = exponet;主に、それはうまくいくでしょう

dataPtr がポインタだからだと思いますstruct PolyTerm* dataPtr;

しかし、私はそれを修正する考えがありません

なぜそれができないのか、それに対する解決策は何ですか?

4

3 に答える 3

0

逆参照するすべてのポインターにメモリを割り当てる必要があります。そして、使い終わったらメモリを解放してください。

int main() {
    int exponet;
    PolyNodeAdr polyNode = (PolyNodeAdr)malloc(sizeof(PolyNode));
    polyNode->dataPtr = (PolyTerm*)malloc(sizeof(PolyTerm));

    printf("\n\tPlease Enter expoent: ");
    scanf("%d", &exponet);

    polyNode->dataPtr->expo = exponet;

    //printf("\n%d\n",polyNode->dataPtr->expo);

    free(polyNode->dataPtr);
    free(polyNode);
    return 0;
}
于 2013-04-02T01:34:58.373 に答える