2009-12-17 10 views
0

J'essaie de créer une table de symboles en utilisant un tableau d'un tableau de structures.Comment créer un tableau d'un tableau de structures

En ce moment, je viens de un tableau de struct, et il est créé comme ceci:

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

Il fonctionne, mais je veux faire quelque chose comme ceci:

symbolTable[MAXSCOPE].tableEntry[MAXSIZE] 

Comment puis-je faire ? Cela a-t-il du sens pour ce que j'essaie de faire?

Répondre

2

Créer une 2 dimensions de struct:

// 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]; 

Vous pouvez désormais accéder à des entrées individuelles comme ceci:

// 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]; 

et utiliser par exemple

symbolTable[scope][entry].value; 
2

Si vous voulez vraiment y accéder de cette façon ...

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

Voici comment vous pouvez accéder aux données

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