我有以下结构:

typedef struct ${
 char author[27];
 char iso[2];
 int nrVolumes;
 TVolume* volume; //this is another struct
}TAuthor;


我需要一个函数来返回指向TAuthor的指针。此函数将传递一个int-nrVol-,它必须返回一个指向nAuthor字段= nrVol的TAuthor的指针。我已经做好了功能。

TAuthor* aloc1(int nrVol){
  TAuthor* new = (TAuthor*)malloc(sizeof(TAuthor));
  new->nrVolumes = nrVol;
  return new;
}


这个运行正常。

TAuthor* aloc2(int nrVol){
  char* new = malloc(sizeof(TAuthor));
  (TAuthor*)new->nrVolumes = nrVol;
  return (TAuthor*)new;
}


在编译“ aloc2”给我这个错误:
    在非结构或联合中请求成员“ nrVolumes”

我的铸造为什么不工作?由于“ new”只是一个字节数组,我想即使通过强制转换编译器也不知道哪个字节负责哪个字段,但是我不确定

最佳答案

您需要先将new转换为TAuthor,然后将其指向其成员:

TAuthor* aloc2(int nrVol){
  char* new = malloc(sizeof(TAuthor));
  ((TAuthor*)new)->nrVolumes = nrVol;
  return (TAuthor*)new;
}

10-07 16:40