可能重复: Why is the type of the main function in C and c++ left to the user to define?
什么是无效?任何人都提供了一些例子,正确使用无效的?而这也正是当我们写void main (void)
或main()
区别?
在C中,在一般情况下,(void)
意味着没有在函数调用所需的参数,而()
装置的参数未指定数量。
EG
void foo(void)
{
// body
}
void bar()
{
//body
}
在呼吁环境,
foo(); // Correct
foo(1); // Incorrect
bar(); // Correct
bar(1); // Also correct
这是一般解释。
但是,对于你的情况主要为(),C99标准说,
5.1.2.2.1计划启动
所谓在程序启动的功能被命名为主力。实施声明没有原型实现此功能。它应为int的返回类型和不带参数进行定义:
int main(void) { /* ... */ }
要么
用两个参数(此处称为argc和argv,虽然任何名称可以被使用,因为它们是本地的,其中声明它们的功能):
int main(int argc, char *argv[]) { /* ... */ }
或等同物;
要么
在一些其它实现定义的方式。
所以,在这个void main(void)
返回类型应该是int
。
而在最后,对于main()
,返回类型是不是给了这么含蓄返回类型是int
。
不包括主要的作为返回类型
main(){
}
并不意味着它是一个void
类型,它依赖于编译器。我认为可以说它通常被解释为
int main(){
}
所述void
类型告诉编译器不存在“实体”(无“存储装置”),所以
void func(int i)
接受一个int,但没有返回。在参数的情况下,这样的:
void func()
相当于这个:
void func(void)
这表明更明确,它不带参数。不同的故事与类型void *
这是一种类型,指针的东西量纲。
基本上,空隙是一种数据类型,它基本上与方法声明使用。这意味着什么或没有类型。例如:
1)int myFunc(void)
- 该功能将一无所获。
2)void myFunc(int)
- 该函数返回什么
3)void* data;
- “数据”是指向未知类型的数据,并且不能被解除引用
虚空手段“emptyness”。在您的无效的主要的例子()这意味着主要的功能()没有返回值。我感到有必要告诉你,无效的主要()应当避免(没有双关语意)不惜一切代价,使用int main()的替代。 INT主()可以确保你的程序可以在接近一个int类型的值返回给操作系统。有空隙许多其他用途,请this website如果您想了解更多关于这一点。
void
是没有值的数据类型。这也是一个不能完成的不完整的数据类型。当作为返回类型的函数中使用,则表明该函数没有返回值:
void foo(int x);
当作为一个参数列表中,则表明该函数没有参数:
void bar(void);
这是从空参数列表,其指示函数采用的参数未指定数量(在C;在C ++中,空参数列表是相同的使用void
)不同:
void bletch();
没有对象(变量)可以被键入void
。但是,你可以声明类型void *
的指针:这些都是“通用”的指针,可以转换为和其他指针类型没有一个明确的转换。标准内存分配函数malloc
,calloc
和realloc
都返回void *
:
double *darr = malloc(sizeof *darr * rows);
在托管实现(基本上,与操作系统的任何东西),main
必须声明为
int main(void)
要么
int main(int argc, char **argv) // the parameter names can be whatever you want,
// but argc and argv are the usual convention;
// char **argv is equivalent to char *argv[]
或在一些其它实现定义的方式;一个实现可以接受
void main()
作为main
一个合法的签名,但必须明确记录在某个地方。