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,提供给我们使用!

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值