gpt4 book ai didi

c - 声明: void (*allocators[])(size_t) and void* allocators[] ?有什么区别

转载 作者:太空宇宙 更新时间:2023-11-04 08:27:34 25 4
gpt4 key购买 nike

40个不同的分配函数给40个不同的调用点

void f00(size_t sz) { void* ptr = malloc(sz); free(ptr); }
void f01(size_t sz) { void* ptr = malloc(sz); free(ptr); }
...
void f39(size_t sz) { void* ptr = malloc(sz); free(ptr); }

这些分配函数的数组。我需要如何定义?

像这样:为什么 (size_t) ?:

  void (*allocators[])(size_t) = { &f00, &f01, ... , &f39 };

  void* allocators[] = { &f00, &f01, ... , &f39 };

这两个声明有什么区别?

最佳答案

第一个是正确的。在第一个声明中,初始化器中不需要 &。应该是

 void (*allocators[])(size_t) = { f00, f01, ... , f39 }; 

它将 allocators 声明为指向函数的指针数组,该函数不返回任何内容并需要一个 size_t 类型的参数。
(size_t) 通知编译器所有函数都需要这种类型的参数。

第二个是错误的,因为它声明了一个指向 void 的指针数组。

关于c - 声明: void (*allocators[])(size_t) and void* allocators[] ?有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732770/

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