gpt4 book ai didi

C 结构体 typedef malloc 赋值

转载 作者:行者123 更新时间:2023-11-30 19:51:53 25 4
gpt4 key购买 nike

我正在尝试使用名为 BankAccount 的结构,它需要名称长度为 50 个字母的 char 数组、int IDdoublebalance。我正在尝试使用 malloc() 将其放入指针,但我得到了这个

error : void can not be assigned to an entity of type BankAccount.
typedef struct
{
char name[50];
int ID;
double balance;
} BankAccount;

FILE *fp;
BankAccount *accounts = 0;
int accountSize = 0;
// I init like this in main function

accounts = malloc(accountSize * sizeof(*accounts));



void ReadAccountData(BankAccount *accounts, FILE *fp, int arraySize)
{
int i = 0;
while (!feof && i < arraySize) {
fread(&accounts, sizeof(accounts), i, fp);
i++;
}

}

最佳答案

如果您使用C语言,则需要使用C编译器来编译您的代码。您现在使用的编译器看起来像 C++ 编译器,它需要将 void * 转换为预定类型。正如 @Olaf ( Why you can't cast void * in C ) 所指出的,在 C 中你不应该这样做。

如何更改编译器?这取决于您所使用的 IDE 和操作系统,在我提供更多详细信息之前需要指定这一点。

如果您想使用 C++,您有几个选择:

  1. 使用malloc,但转换返回值:

    accounts = static_cast<BankAccount *>(
    malloc(accountSize * sizeof(BankAccount)));
  2. 使用C++专用的动态分配,并将BankAccount视为C++结构(您可以添加构造函数、析构函数、方法等)。 ):

    accounts = new BankAccount[accountSize];

关于C 结构体 typedef malloc 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34030458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com