我正在经历一些在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]
但我怎样才能为每个分支做同样的事情呢?
答案 0 :(得分:1)
问题似乎是你在声明之前使用了结构。您可能希望以相反的顺序定义它们。
答案 1 :(得分:0)
首先,更改结构的顺序以取消compilation errors。然后,遇到堆栈溢出的问题,你真的使用 HUGE数组,如果你在函数中有这些,那么你只需要声明每个结构的一个变量,你应该得到{{3} } 概率。
将它们转换为静态,可能会保存您,就像将它们推送到数据部分而不是堆栈一样。但这取决于分配给您的流程的数据部分,而这部分又取决于您运行的系统(OS)。
一旦你这样做,
static Branch BranchList[500];
您正在为所有分支分配空间,那么每个分支的问题在哪里?
由于您要排除malloc
并且如果static
未解决您的问题,请尝试使用stack overflow增加堆栈大小