gpt4 book ai didi

c - 为什么 sizeof (void(*)(void)) 打印 8?

转载 作者:行者123 更新时间:2023-11-30 21:13:54 27 4
gpt4 key购买 nike

我在 here 上看到了以下奇怪的语法类型:

printf("sizeof(void(*)(void))  = %zu\n", sizeof(void(*)(void)));
  • void(*)(void)是什么意思? ?
  • 它有什么作用?
  • 我应该何时何地使用它?
  • 为什么sizeof是8吗?

最佳答案

因为在该平台上函数指针是 8 个字节。

表达式void(*)(void)是一个指向函数的指针,该函数不带参数且没有返回值,因此这就是您要求的大小的类型。

所以,攻击你的列表:

  1. 它是一个函数指针。
  2. 它不“做”任何事情,它只是一种类型。它可用于保存函数的地址。
  3. 当您需要存储函数的地址时。
  4. 可能是因为您使用的是 64 位平台,其中指针为 8 个字节。

关于c - 为什么 sizeof (void(*)(void)) 打印 8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155716/

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