这一定是我的教授宣布typedef
s的方式,因为我还没有遇到这个问题。
我有以下(一块)头文件,以及使用它的随附代码:
多项式.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.exp
我p.coef
该p.next
怎么办?
PS - 究竟是什么typedef term * polynomial;
意思?我想“多个项组成一个多项式”,但我不明白对term
s 的访问是如何变化的。