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