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. 如果文件名里有空格怎么做?
    可以加上双引号,这样双引号里的整体内容会被当作一个整体。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值