目录
1 main 主函数
2 main 函数的返回值
2.1 返回值的意义
2.2 默认返回值
2.3 返回值类型
3 main 函数的参数
3.1 参数内容
3.2 案例:循环遍历主函数的参数
3.3 不传递参数
3.4 powershell 环境下传参
3.5 cmd 环境下传参
3.6 解决 cmd 输出乱码问题
3.6.1 查看文件编码方式
3.6.2 修改 CMD 字符编码
1 main 主函数
在 C 语言中,main 主函数是程序的入口函数,即所有的 C 程序一定要包含一个名为 main 的函数,程序总是从这个函数开始执行,如果没有该函数,程序就无法启动。
主函数中可以调用其它函数,但其它函数不能反过来调用主函数,主函数也不能调用自己(因为这会导致无限递归,最终耗尽系统资源并导致程序崩溃)。
2 main 函数的返回值
2.1 返回值的意义
main 函数返回一个整数给操作系统。按照惯例,返回 0 表示程序成功执行结束,而返回非零值通常表示程序遇到了某种错误或异常情况。这个返回值可以被操作系统或调用该程序的父进程用来判断程序的执行状态。
2.2 默认返回值
在 C 语言中,如果 main 函数没有显式地返回一个值,编译器会隐式地添加 return 0; 到函数的末尾。这意味着,如果 main 函数没有 return 语句,它仍然会向操作系统报告成功结束。然而,为了代码的清晰性和可维护性,建议总是显式地包含 return 0; 或在发生错误时返回适当的错误码。
2.3 返回值类型
main 函数的返回类型必须是 int。这是 C 语言标准规定的,确保 main 函数能够返回一个整数给操作系统。
3 main 函数的参数
3.1 参数内容
主函数的声明中可以带有两个参数,格式如下:
int main(int argc, char *argv[])
{
// 函数体
}
形参 argc,全称是 argument count,它是一个整数,表示传递给程序的命令行参数的数量,包括程序的名称本身。因此,argc 的值至少是 1,即使没有在命令行中指定任何额外的参数。
形参 argv,全称是 argument value,它是一个指向字符串数组的指针,每个字符串都是一个命令行参数的文本。第一个元素 argv[0] 是程序的名称,随后的元素是传递给程序的参数。
这种方式可以通过命令行的方式执行源代码,并接收指定的字符串传给参数 argv。
3.2 案例:循环遍历主函数的参数
下面,我们创建一个名为 demo.c 的源文件,代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("主函数的参数个数 argc = %d\n", argc); // 输出参数的数量
for (int i = 0; i < argc; i++)
{
printf("主函数的第%d个参数是:%s\n", i + 1, argv[i]); // 输出每个参数的值
}
return 0;
}
3.3 不传递参数
如果没有传递参数,argc 的值为 1,表示只有一个参数,即程序本身的名称。
如果不需要传递参数的话,可以直接点击 VS Code 中的运行按钮来运行上面这个程序,输出结果如下所示:
提示:在 Windows 系统中,如果在 PowerShell 下运行程序,argv[0] 通常会包含程序的名称以及它的绝对路径。
当在 VS Code 中直接点击运行按钮时,默认的运行环境是 PowerShell。因此,输出的第一个参数内容是程序本身的名称加上绝对路径。
3.4 powershell 环境下传参
如果需要传递参数给 mian 函数,我们可以通过命令行的方式执行 demo.exe 可执行文件,在命令行中传递多个参数给程序时,这些参数通常是通过空格隔开。
下图是在 VS Code 中的命令行(默认的 powershell 环境)下运行程序并传递参数的输出结果:
提示:上面的输出结果中,使用到了 chcp 指令来查看字符编码,系统回应的内容是 65001,这是 UTF-8 的编码。尽管此源文件的编码也是 UTF-8,但输出结果却是乱码。因此,在 PowerShell 中给主函数传递参数时,可能会遇到乱码问题,即使修改了字符编码也可能无法解决这一问题。
3.5 cmd 环境下传参
由于在 PowerShell 中给主函数传递参数时可能会遇到乱码问题,即使修改了字符编码也可能无法解决这一问题。为了避免这个问题,我们可以在 cmd(命令提示符)中执行程序。
首先,确保删除之前生成的 demo.exe 文件,然后在 cmd 中通过 gcc 指令重新生成可执行文件 demo.exe,最后通过命令行传递相应的参数。具体步骤如下:
3.6 解决 cmd 输出乱码问题
在 CMD(命令提示符)中遇到乱码问题,通常是由于编码不一致或字体不支持显示某些字符集导致的。
CMD 默认使用的是系统区域设置的编码,通常是 GBK(在中文 Windows 系统中)。如果程序或脚本输出的是 UTF-8 编码的文本,就可能会出现乱码。可以更改 CMD 的编码为 UTF-8 来解决问题。
3.6.1 查看文件编码方式
3.6.2 修改 CMD 字符编码
在 CMD 中,可以使用 chcp 命令来更改活动代码页(即字符编码)。要切换到 UTF-8 编码,可以使用:
chcp 65001
chcp 65001 中的 65001 是 UTF-8 编码的代码页编号。在 Windows 系统中,chcp 是“Change Code Page” 的缩写,用于更改当前活动代码页,即字符编码。执行 chcp 65001 命令后,命令提示符(cmd.exe)将使用 UTF-8 编码来处理字符。
除此之外,也可以在 VS Code 中通过 cmd 窗口来运行此程序,由于 VS Code 默认的运行环境是 PowerShell,所以我们需要修改运行环境,具体操作如下所示: