【问题标题】:How to define an array of structure in C?如何在 C 中定义结构数组?
【发布时间】:2012-07-27 06:46:22
【问题描述】:

我有这个结构:

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

谢谢!

【问题讨论】:

标签: c arrays pointers struct


【解决方案1】:

这里我假设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];

【讨论】:

  • 对不起,我想我在这里误解了一些东西,如果它是一个指向这个结构的指针数组,我该如何定义一个结构数组?使用: attr_elment arr[10] 给了我数组,但是如果我想要一个指向结构数组的指针?而不是指向结构指针数组的指针,我该怎么办?
【解决方案2】:

如果 pAttr_Element 是一个指向 Attr_Element 的指针,那么 attr_arr 是一个由 M 个指向 Attr_Element 的指针组成的数组。

换句话说,attr_arr[0] 是 pAttr_Element 类型,attr_arr[0]->name 是 char*,attr_arr[0]->name[0] 是 char。

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 2015-12-18
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多