c语言中argc和argv是什么意思?

2024-05-16 03:41

1. c语言中argc和argv是什么意思?

argc 是 argument count的缩写,表示argv这个二级指针指向的内存区域中保存的由stub写入的有效命令行参数的个数.
argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要输入的main函数的参数个数是argc-1个。

扩展资料 
argc和argv的使用:
#include
int main(int argc,char *argv[])
{
if(argc==1||argc>2)
printf("请输入想要编辑的文件名如:fillname");
if(argc==2)
printf("编辑%s\n",argv[1]);
return 0;
}
参考资料来源:百度百科—argc argv

c语言中argc和argv是什么意思?

2. c语言中argc和argv是什么意思?

argc 是 argument count的缩写,表示argv这个二级指针指向的内存区域中保存的由stub写入的有效命令行参数的个数.
argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要输入的main函数的参数个数是argc-1个。

扩展资料 
argc和argv的使用:
#include
int main(int argc,char *argv[])
{
if(argc==1||argc>2)
printf("请输入想要编辑的文件名如:fillname");
if(argc==2)
printf("编辑%s\n",argv[1]);
return 0;
}
参考资料来源:百度百科—argc argv

3. c语言为什么char *argv[]和char**argv是等价的?

这二者其实不是等价的——前者:argv是个数组,数组的每一个元素都是char *型指针;后者:argv是个指针,指向了cahr *型指针。用于main函数的形参时,由于C的函数是传值调用的,就是说传数组时只需要一个首地址(指针),所以编译器把形参中的x[](x[10]等)都只解释为*x(只有作函数形参时是这样,别的地方意义是不同的),所以char *argv[]就把argv[]解释成了*argv,结果整体就变成了char **argv了(注意在main中并不是argv而是argc,argc是第一个形参,是int类型)!这可能如下验证:
#include "stdio.h"int main(int argc,char *argv[]){	char *a[]={"123","456","abc","ABC"},**p=a;	printf("%d %d\n",sizeof(a),sizeof(p));	return 0;}执行结果:

看a数组有16个字节,而p只有4个字节。且,无论a的内容有多少,p都是4字节。你可能试试。

c语言为什么char *argv[]和char**argv是等价的?

4. argc和argv怎么使用?

1、argc,命令行传递参数的总个数。
2、argv,命令行传递的每个参数值。
例如,编译得到的exe文件为a.exe,执行a.exe1123asdgf34时,每个参数均会转为字符串形式,存储于argv中,这时argc=5argv={"a.exe","1","123","asdgf","34"}
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数。
* argv[ ]: 指针数组,用来存放指向你的字符串参数的指针,每一个元素指向一个参数。
argv[0] 指向程序运行的全路径名。
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串。
argv[2] 指向执行程序名后的第二个字符串。



argc和argv的应用注意事项:
#include
int main(int argc,char *argv[])
{
if(argc==1||argc>2)
printf("请输入想要编辑的文件名如:fillname");
if(argc==2)
printf("编辑%s\n",argv[1]);
return 0;
}

5. char**argv与int**argv[]有什么区别?

char** argv与char *argv[]区别为:指向不同、内存不同、改变不同。
一、指向不同
1、char** argv:char** argv指向一个指向其他对象的指针地址。
2、char *argv[]:char *argv[]指向一个特定的数组。
二、内存不同
1、char** argv:char** argv在磁盘中不占用内存空间。
2、char *argv[]:char *argv[]在磁盘中占用数组大小的内存空间。

三、改变不同
1、char** argv:改变char** argv只改变指向的指向其他对象的指针地址,不改变指向其他对象的值。
2、char *argv[]:改变har *argv[]可以改变指向的数组的值。

char**argv与int**argv[]有什么区别?