2012-07-29 120 views
-2

我有這樣的結構:如何在C中定義一個結構數組?

typedef struct xmlelem{ 
Char   *Element_name; 
Char   *Element_Text; 
pAttr_Element attr_arr[M]; 
Xml_Element  *parent; 
Xml_Element  *children[N]; 
Int   depth; 
Int   num_of_children; 
Int   num_of_attr; 
}Xml_Element,*pXml_Element 

我想知道的childrenattr_arr。 對於attr_arr - 它是一個指向數組的指針,其中每個單元格都來自類型pAttr_Element或類型attr_Element?我怎樣才能弄清楚單元格是指針還是結構本身?我怎樣才能定義它們?我有點失去..

對不起 - 這裏是pAttr_Element:

typedef struct { 
    char *name; 
    char *value; 
}Attr_Element,*pAttr_Element 

另一個編輯,試圖更清晰

我明白了感謝這裏的球員,這是一個數組,其中每個單元格都是類型爲pAttr_Element的指針。

我現在也明白,聲明:Attr_Element [10]是一個陣列,其中每個小區是我的結構的類型

唯一缺少的是如何定義的指針數組,其中每個小區是由類型Attr_Element ?而不是指針

謝謝!

+0

'pAttr_Element'定義在哪裏? – cnicutar 2012-07-29 06:51:44

+0

也許這可以幫助:http://stackoverflow.com/questions/260915/how-can-i-create-a-dynamically-sized-array-of-structs – Jon 2012-07-29 06:52:29

回答

0

這裏我假定attr_Element是結構,而pAttr_Element是typedef指向這個結構的指針類型。

typdef atr_Element* pAttr_Element;

在這種情況下,pAttr_Element attr_arr[M]; attr_arr的每個元素是一個指針變量attr_Element。這意味着attr_arr的類型爲指針的陣列attr_Element

如果要限定attr_Element類型的元素的陣列,直接使用該類型如下

#define SIZE_OF_ELEM 20 

struct attr_Element attr_arr[SIZE_OF_ELEM]; 
+0

我很抱歉,但我認爲我誤解了一些東西在這裏,如果它是一個指向這個結構的指針數組,我該如何定義一個結構數組?使用:attr_elment arr [10]給我的數組,但如果我想要一個指向結構數組的指針?而不是一個指向結構指針數組的指針,我該怎麼辦? – user1386966 2012-07-29 07:01:43

+0

@ user1386966:已更新 – rashok 2012-07-29 07:15:23

0

如果pAttr_Element是一個指向Attr_Element,然後attr_arr是一個指向Attr_Element的M指針數組。

換句話說,attr_arr [0]的類型是pAttr_Element,attr_arr [0] - > name是char *,attr_arr [0] - > name [0]是一個char。

相關問題