如何在C中定义结构数组?

时间:2012-07-29 06:49:38

标签: c arrays pointers struct

我有这个结构:

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类型?而不是指针

谢谢!

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分: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。