2012-07-29 34 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。

相关问题