C++学习之路3——C++中main函数有参数和没参数的区别

main函数有参数和没参数的区别。


//没参数的:
int main () {...};
//有参数的:
int main (int argc, char** argv) {...};
int main (int argc, char* argv[]) {...};
//只有这两种形式,注意是形式,并不是说argc 和 argv这两个参数的名字必须是这两个,有的是args的,但是形式上只有这两种,即参数的类型。

我们常见的两种main函数的形式就是这样,一个有参数,一个没有参数。

没有参数的main函数还好说,很好理解。

对于有参数的main函数就要好好说一下了

形参参数类型:第一个形参是整数型形参,

                            第二个是指向字符串指针的指针,argv[0]表示自身运行目录路径和程序名,argv[1]表示指向的第一个参数,

argv[2]表示指向第二个参数,....


这里对char**做一个解释,以更好的理解:

char*是指向char数据的指针类型,存储的是char字符存储单元的地址值
char**是指向char*的指针类型,存储的是"存储char字符存储单元的地址的存储单元“的地址值"
例如:
char *p = "a"; //p的值==首字符所在存储单元的地址值
char **q = p; //q的值==p所在存储单元的地址值


 

一个main函数里有参数,那么参数是什么时候和怎样传入main函数的呢?

main函数的参数是在操作系统运行程序是传入main函数的,通过显示的给出实参的形式传入main函数的。

例如:在linux 命令行或者windows的cmd里运行可执行文件时有如下形式。

XXX.exe 参数1 参数2 ... //这里的.exe文件就是由一个含有参数的main函数的文件形成,那么在执行这个程 序的时候,就需要给它传入参数,后面的参数1,参数2,...就是实参,注意有空格。而具体要传入几个参数,还是要看argc的数值,而argc的数值的设置则是根据实际需求设定的。

如果在IDE里Run一个.cpp时,而这个.cpp包含了int(int argc, char*argv[]){...},那么在必须传入参数时,没有了命令行,怎么给它传入实参呢?实际上在IDE里可以手动设置一个需要传入参数的.cpp文件的参数设置,在clion里是在Run/Edit Configurations里面配置,具体设置如图:

以上就是C++里面关于main函数有形参的情况。

下面说一下在linux下运行一个可执行文件时,碰到当前可执行文件所在目录与需要传入的参数文件不再同一个目录下时怎么用命令行来完成程序的运行?

第一个方法:

下图显示了可执行文件在/test_sqrt/build目录下,而所需要的文件data.txt在/test_sqrt/src目录下,没办法使用./来文成运行,因为./表示的都是当前目录下的文件,因此就需要用单引号''来表示地址索引,在里面添加data.txt的绝对路径,不能直接没有‘’否则就会报错,在windows的cmd窗口中是双引号“”,然后再添加绝对路径。

 

第二个方法:

在命令行中输入完可执行文件之后,将参数文件(其他目录下)拖入命令窗口,windows下的cmd窗口也是这样。如下图所示,注意把窗口都缩小,否则会出现窗口遮挡无法拖入的情况。

可以看到两种方法最后在命令行中显示的命令是完全一样的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值