main函数的argc与argv

本文介绍了main函数中argc和argv的含义,指出在不传入参数时,argc默认值为1,argv[0]指向程序的全路径名。通过在CMD中执行程序并传入参数,可以增加argc的值。同时,文章提到了当文件名包含空格时,使用双引号将整个路径视为一个整体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main函数可以选择传入参数,如下例:
argc–arguments count
argc–arguments value/vector
字符串数组,用来存放指向字符串参数的指针数组,每个元素指向一个参数,空格分隔参数,长度为argc。数组下标从0开始,
argv[0] 指向程序运行时的全路径名
argv[1] 指向程序在DOS命令中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
argv[argc] 为NULL.

int main(int argc,char* argv[])

argc与argv的默认值:

那么这两个数值具体指的是什么呢?来做一些实验

int main(int argc,char* argv[]) {
 std::cout << argc;
}

首先以上例测试,输出结果argc=1.说明不手动传入任何参数的时候,argc的值仍然为1,即可以认为main中有一个自动传入的参数,那么这个参数是什么的?
那我们注意到还有个argc这个参数,我们来试一试。
源程序1

int main(int argc,char* argv[]) {
 std::cout << "the value of the argv[0] is\n ";
 std::cout << argv[0];
 std::cout<<"\nthe argument count is:\n " << argc << "\n\n";
}

写一个简单的检验程序,输出如下:
在这里插入图片描述

输出如上图,那么可以看出argv[0]所指向的内容为这个exe文件的名字,那么结合argc为1,可以得出一个结论:默认的argc为1是因为每次执行可执行文件的时候argv的第一个元素都指向了可执行文件的名字,所以参数自然为1

如何增加argc的值?

那么在了解到argc默认值为1之后,理所应当思考如何增加argc的值。首先分析概念:argc是传进main函数的参数。那我们来尝试一下给main函数传递参数:

#include<iostream>
int main(int argc, char* argv[],int value) {
//codes are same as above
}

好这样指定之后,在main函数的参数列表里面加一个int value,然后输出发现argc的值仍为1.这说明这样不能增加argc的参数
同理,在main函数里面定义一些参数同样不能使argc增加。这些方法都不是传进main函数的参数。

传进main函数的参数

那么如何给main传进参数呢?首先需要了解使用cmd来执行exe文件。

  1. 在vs等ide中调试使其生成可执行文件。
  2. 打开cmd,输入以下命令:
    在这里插入图片描述
    然后输出要执行的exe文件名,再输入我要传入的参数:
    在这里插入图片描述
    好了可以看到这时arguments count的值已经变为2.传入的参数并不一定会被程序所使用,但一定会被argc所统计
    以上实例中所使用的程序均为源程序1,但为了方便对之前exe文件的名字做了修改
    一个小问题:既然程序一样为什么第一次输出的exe文件名如此之长,而第二次的输出却相当简洁呢?
    ——因为第一次输出的时候没有指定路径,系统默认从根开始,所以会写出绝对路径。而第二次已经给好了大环境的路径,那么输出的时候会只需要输出相对路径即可。

一些注意事项

  1. 如果文件名里有空格怎么做?
    可以加上双引号,这样双引号里的整体内容会被当作一个整体。
    在这里插入图片描述
### 回答1: b'c\xe8\xaf\xad\xe8\xa8\x80main\xe5\x87\xbd\xe6\x95\xb0argc\xe5\x92\x8cargv' 是一个字节串,需要将其解码为字符串。 解码后表达的意思是:这是一个 C 语言的主函数,其中 argcargv 是参数。 ### 回答2: 在C语言中,main函数是程序的入口点。它的形式参数argcargv用于接收程序启动时传递给它的参数。 argc是一个整型变量,它表示传递给程序的参数个数。通常情况下,如果在命令行中运行程序并且没有提供参数,argc的值为1(表示程序名称本身就是一个参数)。如果提供了一个参数,argc的值为2,以此类推。 argv是一个字符指针数组,它包含传递给程序的参数列表。argv[0]是程序名称本身,而argv[1]、argv[2]等则是传递给程序的其他参数。argv的长度等于argc。需要注意的是,所有的参数都以字符串形式传递给程序,因此需要使用适当的函数将它们转换为其他类型。 下面是一个简单的例子,它演示了如何使用argcargv: #include <stdio.h> int main(int argc, char *argv[]) { int i; printf("argc = %d\n", argc); for (i = 0; i < argc; i++) { printf("argv[%d] = %s\n", i, argv[i]); } return 0; } 在这个例子中,程序接收到的参数个数和每个参数的值都会被打印出来。如果没有传递参数,那么输出结果应该类似于: $ ./program argc = 1 argv[0] = ./program 如果传递了一些参数,那么输出结果应该类似于: $ ./program arg1 arg2 arg3 argc = 4 argv[0] = ./program argv[1] = arg1 argv[2] = arg2 argv[3] = arg3 因此,通过main函数中的argcargv参数,我们可以接收并处理用户传递给程序的参数,这对于开发命令行工具和参数化测试很有用。 ### 回答3: C语言中的main函数有两个参数,分别是argcargv。这两个参数对于理解和编写C语言程序都非常重要。 首先,argc是一个整数类型的变量,表示程序运行时传给main函数的命令行参数的数量。其中,argv是一个字符串类型的数组,用来存储命令行参数的值。在程序中,可以通过引用argv数组中的元素来使用命令行参数。 例如,命令行输入"./program arg1 arg2",则argc的值为3,argv数组中的第一个元素是程序名称"./program",第二个元素是"arg1",第三个元素是"arg2"。程序中可以通过下标访问argv数组元素来获取命令行参数的值,例如argv[1]表示第一个命令行参数arg1的值。 其次,使用argcargv参数还可以实现命令行程序的交互操作。在程序中,可以根据用户的输入来执行不同的操作或返回不同的结果。可以通过解析argv数组元素的值来确定程序的执行方式。 例如,一个计算器程序可以通过命令行参数接收用户输入的数字和操作符,然后计算结果并输出到屏幕上。另外一个程序可以根据命令行参数打开指定的文件并进行操作等等。 总之,理解和使用main函数argcargv参数对于编写高效、灵活的C语言程序非常重要。可以通过这两个参数实现程序的交互操作和应对不同的处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值