为什么 sizeof (void(*)(void)) 打印 8?
Why does sizeof (void(*)(void)) print 8?
我在 here 上看到了以下奇怪的语法类型:
printf("sizeof(void(*)(void)) = %zu\n", sizeof(void(*)(void)));
void(*)(void)
是什么意思?
- 它有什么作用?
- 我应该何时何地使用它?
- 为什么
sizeof
是 8?
因为函数指针在该平台上是 8 个字节。
表达式 void(*)(void)
是一个指向不带参数且没有 return 值的函数的指针,因此这就是您要求的大小的类型。
因此,攻击您的列表:
- 这是一个函数指针。
- 它没有 "do" 任何东西,它是一种类型。它可以用来保存一个函数的地址。
- 当你需要存储一个函数的地址时。
- 可能是因为您使用的是 64 位平台,其中指针为 8 个字节。
我在 here 上看到了以下奇怪的语法类型:
printf("sizeof(void(*)(void)) = %zu\n", sizeof(void(*)(void)));
void(*)(void)
是什么意思?- 它有什么作用?
- 我应该何时何地使用它?
- 为什么
sizeof
是 8?
因为函数指针在该平台上是 8 个字节。
表达式 void(*)(void)
是一个指向不带参数且没有 return 值的函数的指针,因此这就是您要求的大小的类型。
因此,攻击您的列表:
- 这是一个函数指针。
- 它没有 "do" 任何东西,它是一种类型。它可以用来保存一个函数的地址。
- 当你需要存储一个函数的地址时。
- 可能是因为您使用的是 64 位平台,其中指针为 8 个字节。