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