亲爱滴蛋蛋 2015-07-21 08:48 采纳率: 27.3%
浏览 3449
已采纳

怎么在一个结构体里调用本身结构体数组

typedef struct XML_DATA
{
struct XML_DATA DATA[10];
char MENU[10][256];
ezxml_t xml;
char *txt;
char *strAttr;
char *file;

};
XML_DATA m_data[10];

这样使用为什么会报错,应该怎么修改?
谢谢大家帮忙看看咯。

  • 写回答

3条回答 默认 最新

  • 91program 博客专家认证 2015-07-21 09:11
    关注

    定义变量要使用:struct XML_DATA m_data[10];
    要不就要改结构体的定义,增加类型,如:
    typedef struct XML_DATA
    { 。。。。。。
    }XML_DATA_S;
    然后可以这样定义:XML_DATA_S m_data[10];

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • beibei2008qq 2015-07-21 08:57
    关注

    你这样相当于一个无限循环,如果这样可以,假如你在定义一个这样的结构体变量时,会无限分配内存,所以肯定不可以。
    typedef struct XML_DATA
    {
    struct XML_DATA **DATA;
    char MENU[10][256];
    ezxml_t xml;
    char *txt;
    char *strAttr;
    char *file;
    };
    XML_DATA m_data[10];
    只能用指针,因为指针大小固定,然后真正用到时给指针分配内存。

    评论
  • beibei2008qq 2015-07-21 09:17
    关注

    struct XML_DATA
    {
    struct XML_DATA **DATA;
    char MENU[10][256];
    ezxml_t xml;
    char *txt;
    char *strAttr;
    char *file;
    }XML_DATA_T;
    XML_DATA_T m_data[10];
    你typededf用错了,刚才没注意

    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 编译arm板子的gcc
  • ¥20 C语言用栈实现无向图邻接矩阵广度优先遍历
  • ¥15 C++代码报错问题,c++20协程
  • ¥15 c++图Djikstra算法求最短路径
  • ¥15 Linux操作系统中的,管道通信问题
  • ¥15 ansible tower 卡住
  • ¥15 等间距平面螺旋天线方程式
  • ¥15 通过链接访问,显示514或不是私密连接
  • ¥100 系统自动弹窗,键盘一接上就会
  • ¥50 股票交易系统设计(sql语言)