【发布时间】:2020-11-18 07:38:04
【问题描述】:
我知道你可以像这样声明一个不带任何参数的函数:
void test()
{
cout << "Hello world!!" << endl;
}
但我也见过
void test(void)
{
cout << "Hello world!!" << endl;
}
和
void test(void*)
{
cout << "Hello world!!" << endl;
}
我的问题是:在这里使用void 和void* 有什么区别?
【问题讨论】:
-
我不记得看过最后一张。我希望它需要你传递一个指向任何类型的指针。
-
test()和test(void)在 C++ 中是等价的,但在 C 中不等价。除非需要 C 兼容性,否则 former form should be preferred。函数test(void*)与其他两个不同;它采用void*类型的未命名参数。 -
没有。
void*本质上是一个无类型指针,一个原始内存地址。它可以指向任何“对象”。您可以将其设置为null使其指向任何内容。 -
@super 与 C 和 C++ 中的许多其他内容一样,“void”一词的含义取决于上下文。就其本身而言,它表示“无”,加上一个星号表示“任何”。 (当你谈到“静态”和“运算符”时,会很有趣。)
标签: c++ syntax void function-declaration function-definition