main函数的参数与命令行参数

我们经常在dos或linux终端下执行一些命令,但这些命令是如何工作的呢。通常他们会跟一些参数,这些参数又是怎么传入到命令里的呢。

这要从先从main()函数的标准写法说起

//demo.c
#include <stdio.h>
int main(int argc, char* argv[])
{
	return 0;
}

main()也是可以传参数的,这个参数就是我们经常用的dos、linux命令的参数。

argc : 输入的参数的个数,由系统自动计数赋值,我们无需对它传参。它的值总是>=1,因为它 一个默认参数就是这个可执行文件的名字,准确说是路径+文件名。
argv[]:命令行下输入的参数被传入这个指针数组中。

在linux下编写一个arg.c的文件如下,我们打印出传入参数的个数以及传入的参数。

//arg.c
#include <stdio.h>
int main(int argc, char* argv[])
{
	int i;
	printf("You given %d arguments\n", argc);
	for(i=0; i<argc; i++)
	{
		printf("The %dth argument is %s.\n", i, argv[i]);
	}
	return 0;
}

编译gcc -o arg arg.c生成可执行文件arg.
执行一下我们编写的这条命令吧,看图
我分别使用相对路径(红框)和绝对路径(黄框)执行了arg命令。
main函数的参数与命令行参数

这些参数都是字符串,即使传入123它也不能直接计算。