解析 main 函数中的参数 int argc, char *argv[]
参考官方文档:主函数 - cppreference.com
有时会见到C/C++中 main
函数中写了参数 int argc, char *argv[]
。
这两个参数的含义如下:
argc
:argument cont,传入main
函数的参数个数,由程序自动统计,默认以空格为分隔符argv
:argument vector,传入main
函数的具体参数值(以字符串存储)
例程
// test.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("numOfArgc = %d\n\n", argc);
printf("numOfArgv = %lu\n\n", sizeof(*argv));
for(int i = 0; i <= argc; i++){
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
编译运行:
betty@betty-VirtualBox:~/桌面/TEST/test$ gcc test.c -o target
betty@betty-VirtualBox:~/桌面/TEST/test$ ./target what a nice day!
numOfArgc = 5
numOfArgv = 8
argv[0] = ./target
argv[1] = what
argv[2] = a
argv[3] = nice
argv[4] = day!
说明在命令行输入的所有内容会被存储到 argv
数组中,但 argc
并不是这个 argv
数组的长度,其长度为8,且具有默认值
// test.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("numOfArgc = %d\n\n", argc);
printf("numOfArgv = %lu\n\n", sizeof(*argv));
for(int i = 0; i < sizeof(*argv); i++){//注意循环条件
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
编译运行:
betty@betty-VirtualBox:~/桌面/TEST/test$ ./target
numOfArgc = 1
numOfArgv = 8
argv[0] = ./target
argv[1] = (null)
argv[2] = SHELL=/bin/bash
argv[3] = COLORTERM=truecolor
argv[4] = TERM_PROGRAM_VERSION=1.74.2
argv[5] = LANGUAGE=zh_CN:zh
argv[6] = PWD=/home/betty/桌面/TEST/test
argv[7] = LOGNAME=betty
总结
- 如果程序需要在启动时从命令行获取参数,则需要使用这2个参数
- 如包管理工具 pip 的命令就需要带有参数:
pip install flask
- 如包管理工具 pip 的命令就需要带有参数:
- 否则不需要这2个参数,这种时候有时会用
main(void)
的写法显式声明不需要参数
原文链接: https://www.cnblogs.com/3to4/p/17041600.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/311107
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!