c - 是否可以创建嵌套结构数组?如何?

标签 c arrays struct

我的这段代码的目标是创建一个 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/

相关文章:

c - 如何释放 C 结构?

c - 尝试从文本文件中读取单词并添加到链接列表,程序崩溃,我不知道为什么

无法在我自己的代码中使用 CHOLMOD 和 CUDA 加速

c - C 中的指针数组?

java - 将 float 组有效转换为字节数组

c - 在小结构的末尾而不是在 2 个成员之间进行对齐填充是否对性能更好?

c - 添加到整数数组基地址 C?

ios - 如何使用自定义标题将单元格排列成部分?

javascript - 将多维数组从 JQuery AJAX 发送到 PHP

C: malloc,结构错误