c++ 中int main(int argc,char* argv[])是什么意思,有什么作用?

声明:如果文章叙述的有什么问题与不足之处,请在评论区指出!

疑问?

如果不考虑细节的话,我们都知道程序的运行都是从主函数开始的,我们一般的见到的都是int main() { }或者void main(){ }那么int main(int argc,char* argv[]){ }int main(int argv,char** argv){ }是的什么意思呢?那又有什么作用呢?


答:

1. 首先一点

即使主函数不带参数,我也推荐你使用int main(){ }这种方式。因为这能够给操作系统返回你程序的运行情况。正常运行的话,操作系统是会收到你的return 值的,同时一些编译器必须要求主函数有int类型的返回值如GCC。

int main(){

	return 0;//程序正常运行的情况下,操作系统是会收到程序返回到0值的
}

2. 然后说主题内容

argc和argv参数是在使用命令行执行程序时候使用的。这样我们就能通过命令行(command line interface,CLI)传入参数给程序。我们还知道int main(int argc,char* argv[]){ }中传入的参数都是形式参数,那么argc 与argv[]就是规定的名字而已。

3. 然后说说具体作用

int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数。
char*型的argv[],为字符串数组指针,用来存放指向的字符串参数的指针数组,每一个数组元素指向一个参数。各成员含义如下:
argv[0] 指向程序运行的全路径
argv[1] 指向在命令行中执行程序名后的第一个字符串参数
argv[2] 指向执行程序名后的第二个字符串参数
argv[3] 指向执行程序名后的第三个字符串参数

argv[n] 指向执行程序名后的第n个字符串参数
argv[argc] 为NULL

当我们不输入argv这个参数,如以下程序:显示参数个数和参数内容

#include <iostream>
using namespace std;

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

    cout << "paraments of input: " << argc << endl;

    for (int i = 0; i < argc; i++)
    {
        cout << "the " << i << " parament is" << argv[i] << endl;
    }
    system("pause");
    return 0;
}

VSCode中
可以看到,在不带参数运行的时候,默认是有一个参数的,那就是程序运行的全路径,内容保存在argv[0]中。
在这里插入图片描述
参数间使用空格分开,可以看到,输入6个参数,但是有7个参数,是因为agrv[0]是程序的全路径,传入的参数内容有必要的时候我们就能在主函数中使用他们。所以看到这你应该明白了,为什么这么写。我们一般还是使用int main(){ } 的方式。


其实我也有一个疑问,就是,main参数中argc这个是接受的参数,而我们是没有传入的啊。是程序直接就把参数个数写到argc变量中去了。我们只需要传入我们想传入的参数即可。这是什么原因啊?

更新:
追风的少年-风之子,回答:当你输入参数结束后,系统会计算你的传的参数个数的。也就是系统会计算传入的参数个数,同时将参数传给argcargv,提供给我们使用!

### 回答1: 这是一个 C/C++ 语言中的主函数,它的作用是作为程序的入口点,运行程序时首先执行该函数。其中,argc 表示命令行参数的个数,即程序启动时传递给程序的参数个数;argv 表示指向字符串数组的指针,每个字符串是一个命令行参数。通常情况下,main 函数的代码会在 argv 中获取命令行参数,进行相应的处理,并最终返回一个整数值作为程序的退出码。 ### 回答2: int main(int argc, char *argv[])是C语言中的程序入口函数。它是一个特殊的函数,作为程序的起点,是程序运行时最先执行的函数。 参数int argc表示命令行参数的个数,即程序运行时通过命令行传入的参数个数。参数char *argv[]是一个指针数组,其中的元素表示每个命令行参数的字符串。 当我们在命令行中运行一个C语言程序时,可以在程序名后面加上一些参数,这些参数可以在程序中被获取和使用。而int main函数的参数就是用来接收这些参数的。 int main函数的返回值是一个整数,用来表示程序的执行结果。按照习惯,返回值为0表示程序执行成功,而非零的返回值则通常表示程序执行出现了错误。 总之,int main(int argc, char *argv[])是C语言程序的入口函数,它接收命令行参数并返回程序执行结果。 ### 回答3: int main(int argc, char *argv[])是一个用于定义C/C++主函数的标准格式。在程序执行时,操作系统会调用main函数作为程序的入口点,开始执行程序的代码。 其中,int表示main函数的返回值类型为整数类型,通常用于指示程序的执行状态。根据惯例,返回值0表示程序成功执行,而其他非零值则可能表示程序出现了异常或错误。 int argc, char *argv[] 是main函数的形参列表。argc代表参数个数(argument count),是一个整数值。而 argv 是一个指针数组(argument vector),用于指向每个参数的字符串。通常,argv[0]指向可执行文件的名称,argv[1]到argv[argc-1]指向传递给程序的命令行参数的字符串。 通过使用这些参数,我们可以在命令行中向程序传递额外的信息或标志,以根据需要定制程序的行为。argv参数可以让程序更加灵活地与外部环境进行交互,并根据不同的输入选择不同的执行路径。 总之,int main(int argc, char *argv[])是C/C++程序的入口函数声明,用于接收命令行参数,并执行程序的主要逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值