这一定是我教授宣布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
polynomom.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中使用结构和typedef做了类似的事情,但我没有使用这种语法:typedef term * polynomial;
。我想这可能会导致问题,并让我失望。
如果我无法以p.exp
,p.coef
和p.next
访问结构的成员,我该怎么办?
PS - typedef term * polynomial;
到底是什么意思?我想“多个术语组成一个多项式”,但我不明白term
的访问权限是如何变化的。
答案 0 :(得分:1)
polynomial
被typedefed作为指向term
的指针。您无法使用.
来访问其元素。你必须先取消引用它:
(*p).next
或使用箭头操作符:
p->next