0

这一定是我的教授宣布typedefs的方式,因为我还没有遇到这个问题。

我有以下(一块)头文件,以及使用它的随附代码:

多项式.h -

#ifndef POLYNOMIAL_H_
#define POLYNOMIAL_H_

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

typedef struct term term;

typedef term * polynomial;

#endif

多项式.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

包含、定义和所有内容——我只是在 C 中使用 structs 和 typedefs 做了类似的事情,但我没有使用这种语法:typedef term * polynomial;. 我想这可能会导致问题,并让我失望。

如果我不能以 、 和 的形式访问结构的成员,p.expp.coefp.next怎么办?

PS - 究竟是什么typedef term * polynomial;意思?我想“多个项组成一个多项式”,但我不明白对terms 的访问是如何变化的。

4

1 回答 1

1

polynomial类型定义为指向term. 你不能使用.它来访问它的元素。您必须先取消引用它:

(*p).next

或使用箭头运算符:

p->next
于 2013-10-06T17:34:50.817 回答