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