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

Jay*_*esh -4 c syntax sizeof void

我在这里看到了以下奇怪的语法类型:

printf("sizeof(void(*)(void))  = %zu\n", sizeof(void(*)(void)));
Run Code Online (Sandbox Code Playgroud)
  • 是什么意思void(*)(void)
  • 它有什么作用?
  • 我何时何地使用它?
  • 为什么sizeof8?

unw*_*ind 9

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

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

所以,攻击你的清单:

  1. 这是一个函数指针.
  2. 它没有"做"任何东西,它是一种类型.它可用于保存函数的地址.
  3. 当您需要存储函数的地址时.
  4. 可能是因为你在一个64位平台上,指针是8个字节.