【问题标题】:How to create an array of an array of structs如何创建结构数组的数组
【发布时间】:2009-12-17 04:26:43
【问题描述】:

我正在尝试使用结构数组的数组创建符号表。

现在我只有一个结构数组,它是这样创建的:

#define MAXSIZE 20 /* maximum number of symbols */
#define MAXSCOPE 10 /* maximum number of scope levels */

 struct tableEntry {
 char *name;
 char *args;
 int value;
 int scope;
 char *type;
 int used;
 } tableEntry [MAXSIZE];

它有效,但我想做这样的事情:

symbolTable[MAXSCOPE].tableEntry[MAXSIZE]

我该怎么做?我想做什么有意义吗?

【问题讨论】:

    标签: c struct bison


    【解决方案1】:
    struct tableEntry symbolTable[MAXSCOPE];
    

    并使用例如

    symbolTable[scope][entry].value;
    

    【讨论】:

      【解决方案2】:

      创建一个二维结构数组:

      // Define the type
      typedef struct tableEntry {
          char *name;
          char *args;
          int value;
          int scope;
          char *type;
          int used;
      } tableEntry;
      
      // Instantiate a 2D array of this type
      tableEntry myArray[MAXSCOPE][MAXSIZE];
      

      您现在可以像这样访问单个条目:

      // Initialise 'value' in each entry to 2
      int scope=0;
      int size=0;
      for (; scope < MAXSCOPE; scope++)
      {
          for (; size < MAXSIZE; size++)
          {
              myArray[scope][size].value = 2;
          }
      }
      

      【讨论】:

        【解决方案3】:

        如果您真的想以这种方式访问​​它...

        #define MAXSIZE 20 /* maximum number of symbols */
        #define MAXSCOPE 10 /* maximum number of scope levels */
        
         struct _table_entry_ {
             char *name;
             char *args;
             int value;
             int scope;
             char *type;
             int used;
        };
        
        struct _symbol_table_ {
            _table_entry_ tableEntry[MAXSIZE]; 
        }symbolTable[MAXSCOPE];
        

        这是您可以访问数据的方式

        symbolTable[1].tableEntry[2].value = 1;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-03
          • 1970-01-01
          • 1970-01-01
          • 2020-03-03
          • 1970-01-01
          相关资源
          最近更新 更多