C 如何创建结构数组的数组
我正在尝试使用结构数组的数组创建一个符号表 现在我有一个结构数组,它是这样创建的:C 如何创建结构数组的数组,c,struct,bison,C,Struct,Bison,我正在尝试使用结构数组的数组创建一个符号表 现在我有一个结构数组,它是这样创建的: #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; } t
#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]
// 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;
}
}
这是可行的,但我想做这样的事情:
#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]
// 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;
}
}
我该怎么做?我想做的有意义吗?创建一个二维结构数组:
// 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];
您现在可以访问如下单个条目:
#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]
// 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;
}
}
//将每个条目中的“value”初始化为2
int scope=0;
int size=0;
用于(;范围
并使用例如
symbolTable[scope][entry].value;
如果你真的想通过这种方式访问它
#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;