2009-12-17 100 views
0

我想创建一个符号表使用的结构数组的数组。如何创建一个数组的结构数组

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

#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] 

我该怎么做?我想要做什么是有意义的?

回答

2

创建结构的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
struct tableEntry symbolTable[MAXSCOPE]; 

,并使用例如

symbolTable[scope][entry].value; 
2

如果你真的想访问它这样...

#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; 
相关问题