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

标签 c function struct

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

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/

相关文章:

c - Ubuntu C 程序可加载模块和 undefined symbol

python - 如何从系数列表构建多项式 lambda 函数?

函数名称前带有下划线的结构标记

go - 我如何获取数组元素的地址,该数组元素是结构的元素,该结构是指针

c - 数据传输时禁用 ARP

c++ - 如何对图像进行高质量缩放?

jquery - 使用 pagebeforeshow jquery 跨多个页面执行一个函数

c - 如何将内容从一个文本文件复制到另一个C语言的文本文件

c - C 中的 N 叉树

c - 如何使用 lockf() 解锁?