所以在我教授的幻灯片中,他只是给出了一些例子:
main()
{...
}
右?但是,当我把它放在visual studio中时,它会给出一个错误,当我把int放在main的前面时它会起作用。 为什么我的教授不会把主人放在主人面前? 可以主要是任何其他类型的变量? 另外我看到很多int main(void)。为什么这有必要?可以将任何其他内容作为参数放入吗?
答案 0 :(得分:6)
main
返回int
。在旧版本的C中,您可以省略int
,编译器会假装您说int
。在C ++中,如果'main'没有显式返回值,它会神奇地返回0.您可以从main
返回三个值:0,EXIT_SUCCESS和EXIT_FAILURE。 0相当于EXIT_SUCCESS。这两个命名值在<stdlib.h>
中定义,如果您使用<cstdlib>
中的C ++进行编码。
void
是一个C风格的声明,函数不带参数。在C ++中你不需要它;一个在声明中没有参数的函数不带参数。
一般而言,main
有两个参数:
int main(int argc, char *argv[])
这些是命令行参数。 argc
是参数的数量,argv
是指向包含参数的C风格字符串的指针数组。第一个字符串(argv[0]
)是程序的名称。
答案 1 :(得分:2)
因为您使用的是:C ++或C99或C11。
C89有一个隐含的int
规则,使main()
等同于int main()
。这在C ++中不存在,自C99以来不再存在。
正如您所提到的,您使用的是Visual Studio并且它不支持C99和C11,您可能正在使用C ++编译器而不是C编译器编译您的程序。
答案 2 :(得分:1)
main
函数的标准形式,传统上是
int main(int argc, char **argv)
前面的int
表示main
函数返回int
,这是main
的退出代码。操作系统argc
和argv
传入的边界与命令行参数相关。 argc
是int
,表示传入程序的参数数量,包括程序名称。 argv
指向个别论点。您可以使用argv[index]
来访问它们。有几个方便的库用于解析参数,例如getopt。