我的这段代码的目标是创建一个 1000 个位置的数组,其中包含一个包含 int (用作计数器)的结构和一个初始化为 100 个位置的数组的嵌套结构。我的设计正确吗?
例如,我试图实现一个 1000 列 x 100 行的二维表,其中这 100 行每行都有前面提到的用作计数器/索引变量的 int,以及 100 行数组中的每个位置由嵌套结构组成! 这是我到目前为止得到的:
#define DATA_MAX 1000
#define MAX_CHAR_TIPO_MOV 60
#define MAX_CHAR_DESCRICAO 60
#define MAX_MOVIMENTOS 100
#define BUFFLEN 1024
char buffer[BUFFLEN];
typedef struct{
int montante;
int data;
int periodicidade;
char tipo[MAX_CHAR_TIPO_MOV];
char descricao[MAX_CHAR_DESCRICAO];
}sistema;
typedef struct{
int indice;
struct sistema tabela[MAX_MOVIMENTOS]; /* Compiler gives me an error here: array type has incomplete element type */
}movimentos;
movimentos c[DATA_MAX];
/* Function to initialize arrays/structs in order to eliminate junk */
void inicializarfc(movimentos c[])
{
int i, j;
//percorre o vector estrutura
for(i=0; i<DATA_MAX; i++)
for(j=0; j<MAX_MOVIMENTOS; j++)
{
c[i].[j].data = -1;
c[i].[j].montante = -1;
c[i].[j].periodicidade = -1;
memset((c[i].[j].tipo), ' ', sizeof(c[i].[j].tipo));
memset((c[i].[j].descricao), ' ', sizeof(c[i].[j].descricao));
}
}
如果确实可以创建我所要求的内容,我应该如何访问结构成员? 使用 GCC 在 W7 中的 Codeblocks 10.05 中进行编译。
最佳答案
您不需要在 typedef
前面使用 struct
关键字。
只需说:
sistema tabela[MAX_MOVIMENTOS];
要访问成员,只需说:
movimentos m;
/* initialize data */
int x = m.tabela[0].montante; // accesses montante field of tabela[0]
关于c - 是否可以创建嵌套结构数组?如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9948574/