C 如何在不同的结构中放置结构的预设数组?

C 如何在不同的结构中放置结构的预设数组?,c,arrays,struct,static-array,C,Arrays,Struct,Static Array,我正在经历一些在C语言中应该很简单的事情,但由于某些原因,它似乎无法正常工作 以下是结构: #define MAX_BRANCH 500 #define MAX_BANK_CLIENTS 100000 #define MAX_CLIENTS 10000 typedef struct Client{ char *pName; char *fName; int id; int branch;

我正在经历一些在C语言中应该很简单的事情,但由于某些原因,它似乎无法正常工作

以下是结构:

    #define MAX_BRANCH 500
    #define MAX_BANK_CLIENTS 100000
    #define MAX_CLIENTS 10000


   typedef struct Client{
        char *pName;
        char *fName;
        int id;
        int branch;
        int AccountNum;
        int credit;
        double surplus;
        double IOU;
        double savings;
    }Client;

   typedef struct Branch{
        int BrnachNum;
        char *Name;
        int Accounts;
        double sumOfAll;
        double profit;
        int ActiveLoans;
        int Opened;
        int Closed;
        Client ClientList[MAX_CLIENTS];
    }Branch;

    typedef struct Bank{
        char *Name;
        int Branches;
        int Accounts;
        int ActiveLoans;
        double sumOfAll;
        double Profit;
        Branch BranchList[MAX_BRANCH];
    }Bank;




int main()
{
   Bank Discount;
   Discount.BranchList[0].Accounts = 1;

   return 0;
}
//--------------------------------------------

将整数值简单地放置到整型参数中会显示堆栈溢出 或对内部字段的任何其他访问 char指针将由strdup分配(我可以使用的唯一内存分配)

请记住,我不能使用任何类型的内存分配

第二,有人指示我设置结构的静态数组。差不多

static Branch BranchList[500]

但是如何对每个分支执行相同的操作呢?

问题似乎是,在声明结构之前,您正在使用结构。您可能希望以相反的顺序定义它们。

首先,更改结构的顺序,以消除这些错误。然后,谈到堆栈溢出的问题,实际上使用的是大型数组,如果函数中有这些数组,那么只需声明每个结构的一个变量,就可以得到一个概率为的数组

将它们转换为静态,可能会将它们保存到数据部分而不是堆栈中。但这取决于分配给进程的数据部分,而进程的数据部分又取决于运行的系统(OS)

一旦你做到了

 static Branch BranchList[500];
您正在为所有分支分配空间,那么每个分支的问题在哪里


由于您排除了
malloc
,如果
static
无法解决您的问题,请尝试使用

增加堆栈大小,您真的应该将其标记为家庭作业…您是否可以显示更多的代码,具体地说:您的结构中有几个指针,您说不允许使用内存分配,所以我想知道如何设置它们指向的对象?这可能只是一个初始化问题。始终使用默认初始值设定项
={0}
初始化所有数组。但为什么会导致这样的结果呢?他的程序实际上会触发编译错误。因为数组在C中的实现方式。在C中,数组自动分配为连续区域。您要求编译器在
Bank
struct中分配
MAX_BRANCH
BRANCH
es,但在文件中的该点,
BRANCH
尚未定义,因此编译器不知道为其分配多少空间。分支机构中的客户机也是如此。顺便说一句,我可能错了。尝试更改声明的顺序,看看是否有帮助。若并没有,让我知道,这样我就可以删除这个答案。若并没有,我只是把它反向复制到网站上。我只是想让你知道结构被放在不同的头文件中。我无法想象一个入门级的赋值会排除需要使用
setrlimit
:-)ha:)的动态分配,这是真的,但OP坚持这样做。做静态分支列表[500]给我一个分支结构数组现在我需要数组中的每个块都有一个客户端结构数组,这就是我的问题我该怎么做?!您的代码在上没有显示运行时错误。因此,据推测,您的开发环境可能不支持大堆栈。你的开发环境是什么?我使用visual studio和eclipse。交易是我需要使用eclipse,我只是想在不同的平台上检查一下。我怎么能使用静态数组?!