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 - 关于数独解法

指向函数原型(prototype)中 srtuct 中 const 的 const 指针

arrays - 来自数组的破坏性拒绝返回被拒绝的值

java - 获取JTextField文本并实时显示在JTextarea上

c - 如何在 C 中的结构数组中查找元素?

go - 根据值匹配数组

c - C 中对 <symbol> 的未解析引用。Makefile 似乎顺序为 : gcc command is perfectly fine according to the suggestions

c - 具体模乘算法

c - 通过消息队列发送void*对象[linux]

c - 从用户输入读取数组的函数产生垃圾值