1

所以在我教授的幻灯片中,他只是简单地举了一些例子:

main()
{...
}

正确的?但是当我把它放在visual studio中时它会出错,当我把int放在main前面时它就可以工作。 为什么我的教授不把 int 放在 main 前面? main 可以是任何其他类型的变量吗?我也看到很多 int main(void)。为什么这是必要的?可以将其他任何内容作为参数放入吗?

4

3 回答 3

6

main返回int。在旧版本的 C 中,您可以省略int,编译器会假装您说过int。在 C++ 中,如果 'main' 没有显式返回值,它会神奇地返回 0。您可以从main0、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]) 是程序的名称。

于 2013-04-21T21:51:54.353 回答
2

因为您使用的是:C++ 或 C99 或 C11。

C89 有一个隐含的int规则,它main()等同于int main(). 这在 C++ 中不存在,并且自 C99 以来不再存在。

正如您所提到的,您使用的是 Visual Studio,它不支持 C99 和 C11,您可能正在使用 C++ 编译器而不是 C 编译器编译程序。

于 2013-04-21T21:50:21.017 回答
1

main传统上,函数的标准形式是

int main(int argc, char **argv)

前面int的 表示main函数返回一个int,也就是 的退出码main。操作系统传入的边界,argcargv命令行参数相关。argc是一个int指示传递给程序的参数数量,包括程序的名称。并argv指向个别论点。您可以使用argv[index]它们来访问它们。有几个方便的库用于解析参数,例如 getopt。

于 2013-04-21T21:57:30.370 回答