0

私はまだこの問題に遭遇していないので、教授が s を宣言した方法に違いありtypedefません。

次の(一部の)ヘッダー ファイルと、それを使用する付属のコードがあります。

polynomial.h -

#ifndef POLYNOMIAL_H_
#define POLYNOMIAL_H_

struct term {
    int coef;
    int exp;
    struct term  *next;
};

typedef struct term term;

typedef term * polynomial;

#endif

polynomial.c -

#include "polynomial.h"

void display(polynomial p)
{

    if (p == NULL) printf("There are no terms in the polynomial...");

    while (p != NULL) {

        // Print the term
        if (p.exp > 1) printf(abs(p.coef) + "x^" + p.exp);
        else if (p.exp == 1) printf(abs(p.coef) + "x");
        else printf(p.coef);

        // Print the sign of the next term, if it applies
        if (p.next != NULL) {
            if (p.next->coef > 0) printf(" + ");
            else printf(" - ");
        }
    }
}

しかし、構造体のプロパティにアクセスしようとするたびに、次のようになります。

error: request for member 'exp' in something not a structure or union

インクルード、定義、およびそこにあるすべてのもの-構造体とtypedefを使用してCで同様のことを行いましたが、次の構文は使用しませんでした: typedef term * polynomial;. これが問題を引き起こしているのではないかと思います。

p.expp.coef、およびとして構造体のメンバーにアクセスできない場合p.next、どうすればよいですか?

PS - 正確に何typedef term * polynomial;を/意味しますか? 「複数の項が1つの多項式を構成する」と想像しますが、 s へのアクセスがどのように変化するかがわかりませんterm

4

1 に答える 1

1

polynomialへのポインタとして型定義されていますterm.を使用してその要素にアクセスすることはできません。最初に逆参照する必要があります。

(*p).next

または矢印演算子を使用します。

p->next
于 2013-10-06T17:34:50.817 に答える