0x01 main 函数原型

C语言规定main函数的参数只能有两个,这两个参数习惯写为argc和argv。
main函数的两个参数可以这样写:

1
2
int main(int argc,char const *argv[]){……}
int main (int argc,char const **argv){……}

第一个形参:argc 是 argument count的缩写,表示传入main函数的参数个数,必须为整型变量
第二个形参:argv 是 argument vector的缩写,表示传入的字符串参数,必须是指向字符串的指针数组

0x02 argc

通过编写 demo.c 并编译运行,发现 argc 即为参数的个数

1
2
3
4
5
6
7
8
9
//demo.c
int main(int argc, char const *argv[]){

printf("argc == %d\n",argc);
return 0;
}

reuslt:
argc == 1

1
2
3
4
root@localhost~: demo test test123

reuslt:
argc == 3

0x03 argv

编写 demo.c 并编译运行

1
2
3
4
5
6
7
8
9
10
int main(int argc,char const *argv[]){

int i;
printf("argc == %d\n",argc);
for(i = 0;i<argc;i++){
printf("argv[%d] == %s\n",i,argv[i]);
}

return 0;
}

1
2
3
4
5
6
7
root@localhost~: demo test test123

reuslt:
argc == 3
argv[0] == \root\demo
argv[1] == test
argv[2] == test123

执行发现,argv[0]是程序名,argv[1] 即为当前程序的传入的第一个参数