C Struct typdef malloc赋值

时间:2015-12-01 21:24:12

标签: c struct

我正在尝试使用名为BankAccount的结构,它采用名称为50个字母的char数组,int IDdouble balance。我试图用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++;
 }

  }

2 个答案:

答案 0 :(得分:1)

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

如何更改编译器?它取决于你正在使用的IDE和操作系统,这需要在我提供更多细节之前指定。

如果你想使用C ++,你几乎没有选择:

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

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

    accounts = new BankAccount[accountSize];
    

答案 1 :(得分:-2)

应该是这样的:

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