main函数
摘要:为何必须包含main函数、main函数的返回值为啥是0
一、每个C++程序必须包含main函数
- 操作系统通过调用 main 来运行C++程序
二、main函数的返回值
1. 举个最简单的main函数作为例子
/* 此函数只返回给操作系统一个值 */
int main() { return 0; }
2. main函数的返回值返回给谁?有何作用?
- return语句结束函数的执行,并返回给调用者一个值。
- 所以,main函数的return返回值给操作系统。
- main函数的返回值可以看做是状态指示器,返回0表明执行成功,非0的返回值的含义由系统定义,通常用来指出错误类型。
- 为了使返回值与机器无关,cstdlib头文件定义了两个预处理变量(EXIT_SUCCESS、EXIT_FAILURE)来分别表示成功与失败。
3. 补充
我们知道如果一个函数的返回类型不是void,那么它必须返回一个值。但是这个规定对于main函数是个例外,是的,main函数确实要返回给调用者一个值,但我们可以省略return语句,此时,编译器会隐式地插入一条返回0的return语句。
三、main:处理命令行选项
1. 我们可以给main函数传递实参
- 目的:通过设置一组选项来确定函数所要执行的操作。
- 示例:若main函数位于可执行文件prog内,我们可以向程序传递下面的选项:prog -d -o ofile data0
- 形式:int main(int argc, char *argv[])
- 解读:第一个形参argc表示数组中字符串的数量;第二个形参argv是一个数组,它的元素是指向C风格字符串的指针
- 当实参传给main函数之后,argv的第一个元素指向程序的名字或者一个空字符串,接下来的元素依次传递命令行提供的实参。最后一个指针之后的元素值保证为0。
2. 题目
编写一个程序,使其接受上面所示的选项;输出传递给main函数的实参的内容。
#include <iostream> #include <vector> #include <cctype> #include <string> using std::cin; using std::cout; using std::endl; using std::vector; using std::string; int main(int argc, char *argv[]) //形参argv是一个数组,它的元素是指向C风格字符串的指针 { for (int i = 1; i != argc; ++i) { cout << argv[i] << endl; } return 0; }