【C语言】int main(int argc, const char *argv[])到底是什么?

2023-01-12 17:57:57 浏览数 (1)

我们在C语言中经常看到的main函数都是不带参数的,因此main函数后面都是空括号,形如 int main() 这类。但实际上main函数是可以带参数的,这个参数可以认为是main函数的形式参数。

C语言规定main函数后面的参数只能有两个,习惯上写成argc和argv。所以就出现了标题上见到的形式:int main(int argc, const char *argv[])。

argc

第一个形参argc必须是整型变量,代表命令行总的参数个数。

argv

第二个形参argv必须是是指向字符串的指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。指针数组的长度即为参数个数argc。

示例

给一个如下的C语言程序,叫做test.c

代码语言:javascript复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, const char *argv[])
{
if(3 > argc)
    {
        printf("请喂我更多的参数啦!");
        goto __RETURN;
    }

printf("*argv0=%srn",argv[0]);//rn是换行

printf("*argv1=%srn",argv[1]);

int b = atoi(argv[2]);//字符串转整型
printf ("*argv2=%d",b);
__RETURN:
    return 0;
}

通过icc将test.c编译成可执行文件a.out后,在命令行输入:

代码语言:javascript复制
[zhxia@ess ~/zhxia] $ ./a.out 3 2 21 3 

得到输出如下:

代码语言:javascript复制
*argv0=./a.out
*argv1=3
*argv2=2

分析

在上面这个示例中, argc=5 argv[0]指向'./a.out' argv[1]指向'3' argv[2]指向'2' argv[3]指向'21' argv[4]指向'3'

0 人点赞