main函数中int argc和char *argv[]的含义,以及char **argv命名方式

这是main函数的固定写法,其中整型变量argc代表命令行总的参数的个数;argv是字符串数组,用来存放命令行各个参数的指针数组

argv[0]:指向程序的全路径名,argv[1]:指向在DOS命令行中执行程序名后的第一个字符串,argv[2]:指向第二个字符串以此类推。

新建一个工程,在命令行下输入如下几个参量:
-k Kinematic4.conf 20171219r.obs 20171219b.obs 20171219r.nav -o GPS-BDS-K-test.pos

数据导入
使用下述循环显示argv中各个参量

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

结果如下
结果


关于char *argv[]和char **argv命名方式的区别可以从字符串和字符串数组说起。
字符串:

 char argv[8]="beijing";
 char argv[8]={"b","e","i","j","i","n","g","\o"};
 char *argv ="beijing";

字符串可以有以上三种等价表述方式,其中第二种中使用”\o”的空字符,意味着字符串本质是以空字符(\o)结尾的char数组(所以字符串跟字符数组是有区别的,字符数组并不要求结尾有空字符)。

其中三者也有一定的区别,前两个是数组名argv是一个常量(数组名就是数组首元素的地址),而指针argv是一个变量(所以可以使用增量运算符,而数组名不可以),这个变量初始化的时候指向字符串的第一个字符,*argv=”b” ; printf(“%s”,argv))输出字符串;printf(“%c”,*argv)输出一个字符;


字符串数组:

 char *argv[3] = {"haidian","beijing","china"}; 
 char argv[3][8] = {"haidian","beijing","china"};

上述两种表述方法展现了一个简单的二维字符串数组(argv[0] = “haidian”,argv[1] =”beijing”,argv[2] =”china”)。
*argv[] 是一个指针数组,他的元素个数是argc个(例子中为3个),存放的是指向每一个参数的指针(一个char类型值的地址指向字符串数组中某一个字符串)。第一个指针是argv[0],它是指向第一个字符串的第一个字符(argv[0] = “haidian”;*argv[0]=’h’),第二个指针是argv[1],它是指向第二个字符串的第一个字符(,argv[1] =”beijing”;*argv[1]=’b’),后面以此类推。这里的argv数组实际上并不存放字符串,它只是存放字符串的地址(字符串存在程序用来存放常量的那部分内存中)。可以把argv[0]看作表示第一个字符串,*argv[0]看成表示第一个字符串的第一个字符,printf(“%s”,argv[i]))输出字符串;printf(“%c”,*argv[i])输出一个字符)。

将字符串数组和字符串中数组名和指针变量类比,char *argv[]和char **argv它俩有等价的效果。

### 回答1: int main(int argc, char * argv[]) 是一个C/C++程序的主函数,它是程序的入口。它接受两个参数:argcargvargc参数的值表示传递给main函数的参数的个数,argv参数是一个指针数组,每个元素都是一个指向传递给main函数的参数字符串的指针。 ### 回答2: int main(int argc, char * argv [ ]) 是C/C++语言程序的一个常见函数原型。它是程序的入口点,也是程序运行时第一个被调用的函数。 其int函数的返回类型,表示函数返回一个整数类型的值。main函数的名称,表示该函数为程序的主函数int main(int argc, char * argv [ ]) 的括号内是函数的参数列表。 参数 argc 表示程序运行时命令行参数的个数,是一个整数类型的值。命令行参数是指通过命令行输入的参数,比如在命令行输入程序名时,后面可能跟着一些参数。程序可以根据参数个数的不同,来执行不同的逻辑。 参数 argv 是一个指向字符指针数组的指针,其每个字符指针指向一个命令行参数的字符串。字符指针数组表示可以存放多个字符指针的数组。通过遍历这个数组,程序可以获取命令行输入的具体参数内容。 通过使用 int main(int argc, char * argv [ ]) 函数,我们可以通过命令行参数来控制程序的行为,灵活地调整程序的逻辑。 总结来说,int main(int argc, char * argv [ ]) 是一个程序的主函数原型,它接受命令行参数并通过返回一个整数值来表示程序的执行状态。同时,参数 argcargv 则提供了获取命令行参数以及参数个数的方式。 ### 回答3: int main(int argc, char * argv [ ])是C语言的主函数,也是程序的入口点。其argc代表命令行参数的个数,而argv是一个字符指针数组,存储了命令行参数的具体内容。 在命令行,我们可以通过输入参数来调用程序,并且程序可以根据不同的参数进行不同的操作。argc会记录传入的参数个数(包括程序名本身),而argv则保存了这些参数的字符串值。 例如,当我们在命令行输入:./program arg1 arg2,那么argc的值将会是3,argv[0]将会是"./program"表示程序本身,argv[1]将会是"arg1"表示第一个参数,argv[2]将会是"arg2"表示第二个参数。 通过使用argcargv,我们可以根据不同的参数来执行不同的程序逻辑,比如根据命令行参数进行不同的计算、读取不同的文件等等。 对于这个主函数,它是每个C程序必须包含的入口点,并且只能有一个。我们可以在主函数调用其他函数,定义变量和执行一些初始化操作等。主函数返回一个整型值(int),通常返回0表示程序正常结束,非零值表示程序异常结束。 总结来说,int main(int argc, char * argv [ ])是C语言程序的入口函数,用于处理命令行参数和执行程序的主要逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值