gpt4 book ai didi

c - 如何将结构体传递给函数来分配内存

转载 作者:行者123 更新时间:2023-11-30 20:04:39 27 4
gpt4 key购买 nike

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

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com