正如标题所述,我想将结构传递给函数并分配内存,也许这是一个愚蠢的问题,但我找不到答案。

structName *allocate_memory( int *numPlayers,structName )
{
   structName *retVal = malloc( sizeof(struct structName) * (*numPlayers) );

   return retVal;
}


问题出在参数structName中应该去哪里?
如果您需要完整的代码,我可以发布它,但是我认为没有必要。

最佳答案

您不能将类型作为参数传递。但是您可以传递其大小:

void *allocate_memory( int *numPlayers, size_t struct_size)
{
   void *retVal = malloc( struct_size * (*numPlayers) );

   if (!retVal) {
       perror("malloc failed!");
       exit(1);
   }
   return retVal;
}


然后这样称呼它:

struct mystruct *s = allocate_memory(&numPlayers, sizeof(struct mystruct));


或者,假设您希望将内存初始化为全0,则改为执行此操作:

struct mystruct *s = calloc(numPlayers, sizeof(struct mystruct));

关于c - 如何通过结构函数来分配内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38314988/

10-12 18:30