第三节 · 总指挥中心 · 主函数
在我们写过的每一个 C++ 程序中,都有一个特殊的函数——main 函数。它是程序的入口点,是一切的起点。
你有没有想过,为什么 main 函数要写成 int main() 而不是其他形式?为什么要在最后写 return 0?main 函数能接收参数吗?
让我们来揭开 main 函数的神秘面纱。
main 函数的返回值
main 函数的返回类型是 int,它向操作系统报告程序的执行状态:
int main()
{
// 程序代码
return 0; // 返回 0 表示程序正常结束
}返回值 0 通常表示程序执行成功,非零值表示程序执行过程中出现了某种错误。不同的非零值可以表示不同的错误类型:
int main()
{
// 假设这里执行了一些操作
bool success = doSomething();
if (success)
return 0; // 成功
else
return 1; // 失败
}在命令行中,我们可以通过特定的方式获取程序的返回值。例如在 Windows 的命令提示符中:
在 Linux/macOS 的终端中:
这在编写脚本或批处理文件时非常有用,可以根据程序的返回值决定下一步的操作。
main 函数的参数
main 函数可以接收两个参数,用于获取命令行参数:
假设我们的程序名为 hello,在命令行中这样运行:
输出将是:
注意,argv[0] 是程序本身的名字(或路径),从 argv[1] 开始才是用户提供的参数。
argv 是一个字符串数组,每个参数都是一个 C 风格字符串(char*)。也可以写成 char** argv,两种写法是等价的。
命令行参数的应用
命令行参数在实际开发中非常有用。比如,我们可以编写一个简单的计算器程序:
使用方法:
main 函数的特殊性
main 函数有一些其他函数没有的特殊性质:
程序入口:
main是程序的唯一入口点,程序从这里开始执行。不能被调用:你不能在程序中调用
main函数,这是被禁止的。可以省略 return:如果
main函数结尾没有return语句,编译器会自动添加return 0;。
只能有一个:一个程序只能有一个
main函数。
两种标准形式
C++ 标准规定了 main 函数的两种合法形式:
你可能见过 void main() 这种写法,但这在 C++ 标准中是不合法的,虽然某些编译器可能会接受。为了代码的可移植性,我们应该始终使用标准形式。
程序的终止
除了从 main 函数返回,还有其他方式可以终止程序:
exit 函数
exit 函数会立即终止程序,并返回指定的状态码。它可以在程序的任何地方调用,不仅限于 main 函数。
abort 函数
abort 函数会导致程序异常终止,通常会产生一个核心转储文件用于调试。
理解 main 函数的工作方式,是理解 C++ 程序执行流程的关键。作为程序的总指挥中心,main 函数承担着启动和协调整个程序的重要职责。
习题
编写一个程序,接收若干个命令行参数(数字),计算并输出它们的和与平均值。
修改上面的计算器程序,增加对取余运算(%)的支持。
Last updated