問一點關於結構和指針的問題
1. 如下:typedef struct
{
int x [ MAX + 1 ];
int y;
} *helper;
這裡的 *helper是一個指針吧?是指向這個結構體的指針?那這個結構體的類型是什麽?
2.如下
typedef a b ,c;
struct a {
int h,i;
};
typedef struct x y;
struct x {
c f;
y *m;
}
這裡c 是 結構體 a 的重命名,在第二個結構體中,又聲明了一個變量 f ,那 f 是不是就是 a 類型的結構體啊?換言之,就是 f 有兩個 int 類型的成員 h i 是嗎?
3.有如下多項式加法的代碼
//type declaration for array implementation of the polynomial
typedef struct
{
int CoeffArray[ MaxDegree + 1 ];
int HighPower;
} *Polynomial;
//Initialization
ZeroPolynomial( Polynomial Poly )
{
int i;
for( i = 0; i <= MaxDegree; i++ )
Poly->CoeffArray[ i ] = 0;
Poly->HighPower = 0;
}
//Polynomial addition
void AddPolynomial( const Polynomial Poly1, const Polynomial Poly2, Polynomial PolySum )
{
int i;
//Initialization
ZeroPolynomial( PolySum );
//Decide the highest power of the result polynomial
PolySum->HighPower = Max( Poly1->HighPower, Poly2->HighPower );
//add the corresponding terms of Poly1 and Poly2
for( i = PolySum->HighPower; i >= 0; i-- )
PolySum->CoeffArray[ i ] = Poly1->CoeffArray[ i ]+ Poly2->CoeffArray[ i ];
}
我稍微說明一下,用數組實現多項式加法的時候,用了下標表示次冪的方法,也就是說數組的第一個元素,下標是0,那麼對應的就是多項式中次冪為0的那一項。
大多數代碼都已經給出了,那麼,如果要用數組實現多項式的減法,是不是只需要在最後一句
PolySum->CoeffArray[ i ] = Poly1->CoeffArray[ i ]+ Poly2->CoeffArray[ i ];
中,把 Poly1->CoeffArray[ i ]+ Poly2->CoeffArray[ i ]; 的 + 改為 - 就可以了吧?