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

时间:2012-04-09 07:07:53

标签: 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;
        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;
}

// -------------------------------------------- < / p>

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

请记住,我无法使用任何类型的内存分配。

其次,有人指示我设置结构的静态数组。像

这样的东西
static Branch BranchList[500]

但我怎样才能为每个分支做同样的事情呢?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

首先,更改结构的顺序以取消compilation errors。然后,遇到堆栈溢出的问题,你真的使用 HUGE数组,如果你在函数中有这些,那么你只需要声明每个结构的一个变量,你应该得到{{3} } 概率

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

一旦你这样做,

 static Branch BranchList[500];

您正在为所有分支分配空间,那么每个分支的问题在哪里?

由于您要排除malloc并且如果static未解决您的问题,请尝试使用stack overflow增加堆栈大小