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

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

谢谢!

最佳答案

这里我假设 attr_Element 是结构体,而 pAttr_Element 是指向该结构体的指针类型的 typedef。

typdef atr_Element* pAttr_Element;

在本例中,pAttr_Element attr_arr[M]; attr_arr 的每个元素都是指向 attr_Element 的指针变量。这意味着 attr_arrattr_Element

类型的指针数组

如果要定义 attr_Element 类型的元素数组,请直接使用该类型,如下所示

#define SIZE_OF_ELEM 20

struct attr_Element attr_arr[SIZE_OF_ELEM];

关于c - 如何在C中定义结构体数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11707289/

相关文章:

c - 以指针为参数的数组函数

java - 创建一个二维字符串数组 anArray[2][2]

javascript - 迭代对象键和值(对象数组)

c - 使用 newSocket.sin_port = htons(portNumber) 将端口号分配给套接字时出错;

c - 从C语言文件中读取二进制整数

javascript - 仅合并重复出现的重复对象

C++,将非指针类型分配给模板类的成员指针

c++ - 为 64 位和 32 位构建创建指针大小的 union

c - 缓存的 SSL session 是否包含以前的 X.509 证书信息?

c - 按位补码运算符